Away3D-01

最近在學習Away3D,雖然覺得目前用到的機會不大,但玩玩也好~~^^

下載Away3D
 Away3D 官網:http://away3d.com/
先進入Away3D的官網,點Download後,進入Download頁面,會看到下面的內容:
 Flash Version: Flash 11 or newer //目前最新的版本Away3D4.0,需要Flash player 11以上的版本才可正常執行
Source files: Download //點擊下載相關的AS檔案
SWC File: Download //SWC是把相關的AS包成一個SWC檔,不想下載後看到一堆AS的人,可以載SWC
 Example source: Download **//官網的範例檔,載下後執行,就可看到一些做好的範例,還滿精彩的 

安裝FlashDevelop
建議安裝FlashDevelop-4.0.1以上版本,它會自動裝好Flash player11和相關的SDK,不需要做太多的設定

第一個程式:

//View=>3D場景
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import away3d.containers.View3D;
    
    public class Away3D_0101 extends Sprite {
        private var view:View3D;
        public function Away3D_0101():void {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            view = new View3D();   
            view.antiAlias = 4;        

            addChild(view);            
            addEventListener(Event.ENTER_FRAME, function(e:Event):void { 
                view.render();
            } );
            
        }    
    }
}

view = new View3D(); //建立3D場景
view.antiAlias = 4; //抗鋸齒(4.0.0新屬性)//0,2,4和16是有效的設值,值愈高愈平滑,預設是0
//view.x = stage.stageWidth/2; // 消失點-x
//view.y = stage.stageHeight/2; // 消失點-y
addChild(view); //將3D場景加入場景中
Category: 0 意見

XML相關文參考網址

xml手冊 http://por.tw/Website_Design/PHP5/ref.dom.html
xpath教學 http://mi.hosp.ncku.edu.tw/km/index.php/dotnet/48-netdisk/57-xml-xpath
xPath手冊 http://www.w3school.com.cn/xpath/xpath_syntax.asp

最近都在用php抓xml資料,稍微整理一後發現,原來PHP跟AS3的語法差這麼多,寫了PHP就忘了AS3;寫了AS3就忘了PHP...,不知道JS又是什麼語法@@"

簡單的抓節點練習(PHP):

<?
$xml_str="<?xml version='1.0' encoding='UTF-8'?><root attr='rootAttr'><A attr1='attrVal1' attr2='attrVal2'>aa</A><B attr='attrB'>bb</B></root>";
$doc = DOMDocument::loadXML($xml_str); //載入xml字串
//抓節點
echo $doc->documentElement->nodeName."<BR>";//根節點節點名稱
echo $doc->documentElement->firstChild->nodeName."<BR>";//根節點下第一個node的nodeName
echo $doc->documentElement->firstChild->textContent."<BR>";//根節點下第一個node的內容
$nl= $doc->documentElement->childNodes;//根節點下所有的子節點列表
foreach($nl as $k =>$v){//根節點下所有的子節點的nodeName
echo $v->nodeName."<BR>";
}

echo $doc->documentElement->childNodes->item(0)->nodeName."<BR>";//根節點下第一個node的nodeName

//抓屬性
echo $doc->documentElement->getAttribute("attr")."<BR>";//根節點的attr屬性值

$al=$doc->documentElement->firstChild->attributes;
foreach($al as $k =>$v){//根節點下第一個node的所有屬性
echo $k.",".$v->textContent."<BR>";
}
?>


簡單的抓節點練習(AS3):

var str:String = "<?xml version='1.0' encoding='UTF-8'?><root attr='rootAttr'><A attr1='attrVal1' attr2='attrVal2'>aa</A><B attr='attrB'>bb</B></root>";
var xml:XML = XML(str);
//抓節點
trace(xml.name());//根節點節點名稱
trace(xml.children()[0].name());//根節點下第一個node的nodeName
trace(xml.children()[0].text());//根節點下第一個node的內容
var nl:XMLList = xml.children();//根節點下所有的子節點列表
for (var i:Object in nl) {//根節點下所有的子節點的nodeName
trace(nl[i].name());
}
//抓屬性
trace(xml.@attr);//根節點的attr屬性值
var al:XMLList = xml.children()[0].attributes();
for (var j:Object in al) {//根節點下所有的子節點的nodeName
trace(al[j].name()+","+al[j]);
}

AdvancED Game Design with Flash-1-1

p.42
Verlet integration:高度可靠的遊戲物理系統
MVC(Model-View-Controller):把物件分成三個部份的設計模式

p.44 Euler integration vs. Verlet integration




function get vx():Number{
return posX-prevX;
}
function set vx(value:Number):void{
prevX=posX-value;
}
function set setX(value:Number):void{
prevX=value-vx;
posX=value;
}

範例下載

p.63

Model:所有資料的集合,包含加速度、速度、旋轉速度、角度和一些不可視的資訊,調度改變時,資料的變化。
View:所有在場景上可看到的東西,依Model的指令而改變場景上的東西。
Controller:所有邏輯層面,執行使用者的輸入

AdvancED Game Design with Flash-0

AdvancED Game Design with Flash 讀書筆記
這本書不知道要看多久…原文Orz...













p26.專案的資料夾結構

HelloWorld project folder專案資料夾
assets This folder contains the extra things that you use in your project, like images, video, and
sound. 其它需要在這個專案中用到的東西,像圖片、影像、聲音...
deploy This optional folder is used for the final published form that your game takes, such as
part of an HTML file.最後發佈時產生的檔案,例如HTML檔,這個資料不是必要的。
bin This is the destination folder for compiled SWFs. “bin” is short for “binary,” which is another
way of referring to finished, compiled programs. 發佈的SWF檔
src This is the location of your project-specific AS source files. If you’re using Flash Professional, it will
also be the location of your main FLA file.AS程式碼、FLA檔

p26.Flex metadata tag
ex:
[SWF(backgroundColor = "0xFFFFFF",
frameRate = "60", width = "550", height = "400")]
發佈swf時,為swf加入額外的訊息,像背景色、場景大小等...
也可嵌入字型、圖片、聲音等class會用到的元件。

p33.提昇Flash的一些方法
*Bit-block transfer:目前Flash有一個瓶頸,就是顯示物件和影片物件全都放在場景上,使用 bit-block transfer(或稱作blitting)方法,可以立即增進2~5倍的效能,而且不用改太多code (在第六章有相關的教學)
*Streamline your logic
*Use the Vector class for arrays that contain the same data types:若是一組資料的資料型態都相同,使用Vector class來取代 Array class ( Flash Player 10 以上才開始有Vector這個資料型別)
Use uint instead of Math.floor:使用uint取代Math.floor來取得整數,執行速度較快,但不能用在負數
Multiplication is almost twice as fast as division:乘法的執行速度比除法快兩倍(能用乘法就用乘法,ex:
x=x/2
可改寫成:
x=x*0.5
*Use lookup tables as much as possible:儘量使用lookup tables(查找表)(在第六章有相關的教學)
*Avoid creating and destroying objects unnecessarily:非必要時,不要建立或移除物件,如果有物件待會兒可能會再用到,寧願把它的visible設成false暫時先隱藏,而不要先移除,等到用時再新增。(對FlashPlayer而言,暫時隱藏會比重新建立一個物件的效能好)
*Consider object pooling:一開始就先建立好可能要用的物件,要用時再設初值給這些物件。
*Bitwise operations are sometimes faster:使用位元運算子(Bitwise operators) 通常執行速度會快一些。

Flash作品 拼圖2_新竹鄉鎮市地圖

這是一個簡單易的拼圖遊戲,最早的版本是大學時的期中作業,年代久遠啊~AS2.0
這支大概改了3次吧,
第一次是期中交作業時作的初版,
第二次是畢業後,心血來潮拿出來改,
第三次是剛好看到有人在知識+求檔,再拿出來改過後再發佈。
每隔一陣子,把舊的code拿出來再看一遍,再修改一下,
會發現自己以前怎麼會寫得這麼爛,邏輯怎麼這麼差,
然後就能發現自己在不知不覺進步了。

原始檔下載

Flash Player版本

寫好一個Project,測試時都沒問題,最討厭的就是正式上線Run時bug一堆,程式邏輯方面的bug還好,至少知道原因為何(不過這種東西通常在測試時就會被發現),最怕的就是為什麼A電腦可以正常執行,B電腦不行?碰到這種問題,什麼作業系統、FlashPlayer版本、瀏覽器、網路環境、使用者怎麽操作的,什麼雜七雜八的原因都要猜測,尤其一個project整合的環境愈複雜,要猜測的原因就更多了。

我常碰到的大概就 作業系統、FlashPlayer版本、瀏覽器 這三個原因佔大多數,所以來整理一下FlashPlayer、瀏覽器的安裝程式吧:
[[Flash Player]]
Flash Player 移除程式 http://kb2.adobe.com/cps/141/tn_14157.html
Flash Player 各種版本下載中心 http://www.adobe.com/support/flashplayer/downloads.html

[[火狐 Fire Fox]]
3.6.13 http://download.mozilla.org/?product=firefox-3.6.13&lang=zh-TW&os=win
(要其它版本的話把網址中的3.6.13改要的版本號碼)

JSON整理

JSON-AS3.0
檔案下載

import com.adobe.serialization.json.*;
trace(JSON.encode(obj_or_array));//編譯
trace(JSON.decode(string));//解譯
Category: 0 意見