[Flash AS3] 載入與按鈕 (1)

完全沒碰過Flash的語法
或者以下我的文章大家如果看不懂

強烈建議手邊要有書!!!

因為AS3語法不會太簡單,我對這語法還不熟
這理做筆記用以免馬上忘記

這是普通載入一個swf或是圖檔的寫法

var loader = new Loader();   //設定loader為載入影片的物件
loader.load(new URLRequest(“home.swf”)); //設定載入來源名稱
addChild(loader);    //載入至舞台(stage)上
loader.x = 0;  //設定載入後的X位置
loader.y = 0;  //設定載入後的Y位置

 語法中addChild的前面如果沒寫字,就是載入到舞台上
而有寫名字就會載入到指定名稱的MovieClip上

例如

myMovieClip.addChild(loader);

=======================================================

先說說Flash的階層概念

在Flash中,大部分的東西都是物件(DisplayObject),只是有名字跟沒名字而已(可做程式化控制)
載有載入外部檔案的時候,MainTimeline可以有多個,而stage只有一個

根目錄是[object Stage]

假設空白舞台上有個MovieClip叫做show_me

[object Stage]>[object MainTimeline]>show_me [object  MovieClip]

———————————–

如何切換其路徑?

假設要切換到[object MainTimeline]
可以這樣測試

trace(stage.numChildren); 
trace(stage.getChildAt(0)); 

Output視窗就會顯示1[object MainTimeline]
意指stage下只有一個子物件,而該第0號物件為MainTimeline (主時間軸)

相關指令:
numChildren():int                      是該物件底下有多少子物件
getChildAt(index:int)                  抓取第n個子物件
getChildByName(name:String)   抓指定名稱的子物件

———————————–

剛剛有提到
例如載A.swf載入B.swf的時候,MainTimeline會有多個,而stage只有一個
B.swf獨立執行時,有它自己的stage

而被A.swf所載入時,MainTimeline的父物件會被換成loader

如何知道的?

有個指令叫parent抓取其父物件

if (getChildAt(0).parent.parent == this.stage)
{
   trace(“並未由外部載入”);
}
else
{
   trace(“由外部載入”);
   trace(getChildAt(0).parent.parent);
}

這是判斷swf是否從外部載入,可判斷該swf執行時有沒有看到stage
外部載入這行就會顯示該loader物件為誰