1

好的,我有一个简单的 flash 文件,因为我试图完成从影片剪辑中的主舞台访问变量。我从谷歌找到的所有东西都指向 MovieClip(root)。但它不适合我。

在主时间线上:

var MyName:String;
MyName = "kenny";

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

trace(MovieClip(root).MyName);

我收到此错误:TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::Stage@2d2df089 to flash.display.MovieClip。在 MyBox/sendpmtext()

我也尝试过 MovieClip(parent)、MovieClip(parent.parent)、MovieClip(stage)、MovieClip(this.stage),但没有成功。请问有什么帮助吗?

4

2 回答 2

3

你可以做

parent["MyName"];

或者,主时间线的正确转换(在您的上下文中,父级是 MainTimeline 类型):

MainTimeline(parent).MyName;

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

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


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

var mainTimeline:MainTimeline;

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

MyBox.mainTimeline = this;

然后您可以通过执行访问 MyBox 中的 varmainTimeline.MyName;

于 2012-09-25T20:01:25.237 回答
0

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

DisplayObject(stage)

或者

DisplayObjectContainer(stage)

并访问自定义属性:

DisplayObject(this)["MyName"]
于 2012-09-25T19:42:28.887 回答