AS3.0 中root和parent的用法

2011-06-07 13:59:56 by 【6yang】, 941 visits, 收藏 | 返回

一、首先看一下在单个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了。

 

AS2.0时的
_root.gotoAndPlay();
-----as3.0 解决-------
改为MovieClip(root).gotoAndPlay()就行了


this["root"].gotoAndPlay()   
MovieClip(root).gotoAndPlay()

上一级是this["parent"].gotoAndPlay();
根下的东西是root["asdfasdf"].gotoAndPlay()

///////////
MovieClip(parent).gotoAndPlay()

/////其他说法///////
最标准的用法是

DisplayObject.root //该显示对象所在的显示列表的根对象

AS3里面的root和stage现在都可以作为任意一个现实对象的属性来调用

另外Bitmap对象的root是它本身

分享到:
share

    图片原图

    loading

    loading