Actionscript 3 MovieClip(根)不工作。如何从movieclip访问根变量?闪光AS3

Actionscript 3 MovieClip(根)不工作。如何从movieclip访问根变量?闪光AS3,actionscript-3,flash,Actionscript 3,Flash,好的,我有一个简单的flash文件,因为我试图从电影剪辑的主舞台访问一个变量。我从谷歌找到的所有东西都指向MovieClip(root)。但这对我不起作用 在主要时间线上: var MyName:String; MyName = "kenny"; 然后我有一个叫做MyBox的movieclip,它的代码是: trace(MovieClip(root).MyName); 我得到这个错误:TypeError:error#1034:Type强制失败:无法转换flash。display::Stage

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

在主要时间线上:

var MyName:String;
MyName = "kenny";
然后我有一个叫做MyBox的movieclip,它的代码是:

trace(MovieClip(root).MyName);
我得到这个错误:TypeError:error#1034:Type强制失败:无法转换flash。display::Stage@2d2df089要闪烁.display.MovieClip。 在MyBox/sendpmtext()中


我也试过MovieClip(parent)、MovieClip(parent.parent)、MovieClip(stage)、MovieClip(this.stage)和no luck。有什么帮助吗?

Stage
DisplayObject
,但不是
MovieClip
。试图使用强制手段

DisplayObject(stage)

和访问自定义属性:

DisplayObject(this)["MyName"]
你可以这么做

parent["MyName"];
或者,对主时间线进行适当的强制转换(在您的上下文中,父级为MainTimeline类型):

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

root
指的是swf的最顶层。您的主时间线实际上是stage的子级,因此主时间线上的变量/对象/方法不属于
stage


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

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

MyBox.mainTimeline = this;

然后,您可以通过执行
maintaline.MyName

给出了以下错误:通过静态类型flash的引用访问可能未定义的属性MyName。display:DisplayObject。并通过静态类型flash的引用访问可能未定义的属性MyName。display:DisplayObjectContainer.DisplayObject(stage)[“MyName”]提供了flash.display.stage上找不到的属性MyName,并且没有默认值。我的错误,您想访问stage上的movieclips吗?谢谢您的帮助。我不明白为什么我会犯这些错误。我在Flash CS5中得到了一个AS3文件。MyName不在stage的作用域中,这就是为什么它不起作用。这会产生Flash.display.stage上找不到的属性MyName,并且没有默认值。GRRR我是弱智吗???家长[“我的名字”]给出了相同的错误:(我不知道如何使用文档类文件。我是否缺少全局关键字?MainTimeline(父项)。MyName;给出错误符号“MyBox”,层“AS”,第1帧,第15 1180行:调用可能未定义的方法MainTimeline。movieclip MyBox是通过addChild()添加的,这有关系吗?)?stage.addChild是精确的。因为现在
stage
是父级,而不是主时间表。请使用addChild而不是stage.addChild
var mainTimeline:MainTimeline;
MyBox.mainTimeline = this;