MovieClip(root)不工作.如何从movieclip访问根变量?Flash AS3



好的,我有一个简单的flash文件,因为我试图从电影剪辑的主舞台访问一个变量。我在谷歌上找到的所有东西都指向MovieClip(root)。但这对我不起作用。

在主时间线上:

var MyName:String;
MyName = "kenny";

然后我有一个名为MyBox的电影剪辑,它的代码:

trace(MovieClip(root).MyName);

我得到了这个错误:类型错误:错误#1034:类型强制失败:无法转换闪存。显示::Stage@2d2df089到flash.display.MovieClip。在MyBox/sendpmtext()

我也尝试过MovieClip(parent),MovieClip[parent.parent],MovieClip(stage),Movie Clip(this.stage)但没有成功。请帮忙吗?

您可以直接执行

parent["MyName"];

或者,主时间线的适当铸造(在您的上下文中,父级是MainTimeline类型):

MainTimeline(parent).MyName;

父对象始终是DisplayObjectContainer,它没有您创建的特殊属性。如果创建自定义属性,则需要强制转换为具有这些自定义属性的类,然后才能按名称访问它们。(否则编译器不知道它们的存在,并向您提供该错误)。

root指的是swf的最高阶段。您的主时间线实际上是stage的子级,因此主时间线上的vars/对象/方法不是stage的一部分


如果使用stage.addChild(MyBox),则stage是父时间线,而不是主时间线。如果出于某种原因,你需要将stage作为父级,那么你必须在可以访问的地方保留对mainTimeline的引用。您可以在MyBox时间轴中创建一个var来完成此操作。

var mainTimeline:MainTimeline;

然后在主时间线代码中,执行以下操作:

MyBox.mainTimeline = this;

然后,您可以通过执行mainTimeline.MyName;在MyBox中访问您的var

StageDisplayObject,但不是MovieClip。尝试使用强制

DisplayObject(stage)

DisplayObjectContainer(stage)

和访问自定义属性:

DisplayObject(this)["MyName"]

最新更新