AS3.0 中root和parent的用法

一、首先看一下在單個swf中的用法:
在主舞臺上的幀上寫下如下代碼:
var xxx="this is root";
新建一個MC,給它一個實例名稱test_mc1,在test_mc1中的幀上寫下如下代碼:
trace(parent["xxx"]);
trace(root["xxx"]);
trace(root["test_mc1"].alpha)
最終的輸出爲:
this is root this is root
1
如果在test_mc1中在建立一個實例名稱爲test_mc2的movieclip,如何trace它的alpha呢:
trace(root["test_mc1"].test_mc2.alpha);
最終輸出“1”。

二、如果是兩個swf,他們之間是怎樣操作的呢:
新建兩個flash文件,命名爲a1和a2,
在a1.fla中的幀上寫下如下代碼:
var xxx="this is root";
var myloader=new Loader();
myloader.load(new URLRequest("a2.swf"));
addChild(myloader);
在a2.fla中建立一個動態文本框,實例名稱爲txt;
在幀中寫下如下代碼:
txt.text=parent.root["xxx"];
分別發佈兩個flash文件,然後運行a1.swf,看到其顯示結果爲"this is root";
在發佈a2.swf是你會看到:
ReferenceError: Error #1069: 在 flash.display.Stage 上找不到屬性 xxx,且沒有默認值。
at a2_fla::MainTimeline/a2_fla::frame1()
不用去理它,因爲他不是通過a1.swf load到場景,所以找不到xxx這個參數。
這裏的第一個parent是a1.swf中的myloader,myloader的再上一級才能找到xxx這個參數,這裏也可以寫成parent.parent["xxx"]。
我想通過這兩個例子應該比較清楚如何在AS3中使用root和parent了。

但as3的root在類型轉換上出現的問題具有普遍性
as3的文檔類通常使用Sprite或MovieClip,但實際上繼承DisplayObject的類,在理論上均可做文檔類
故adobe在設計root時,
設計爲root:DisplayObject

很多時候需要使用root as MovieClip來使用gotoAndStop一類腳本

AS2中的_root,在AS3的用法


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章