好吧,我有一个简单的 flash 文件,因为我试图完成从影片剪辑内的主舞台访问变量。我从谷歌找到的所有东西都指向MovieClip(root)。但它不适合我。
在主时间轴上:
var MyName:String;
MyName = "kenny";
然后我有一个名为 MyBox 的影片剪辑,其代码:
trace(MovieClip(root).MyName);
我收到此错误: TypeError: Error #1034: Type Coercion failed:无法将 flash.display::Stage@2d2df089 转换为 flash.display.MovieClip。
在 MyBox/sendpmtext()
我也尝试过 MovieClip(parent)、MovieClip(parent.parent)、MovieClip(stage)、MovieClip(this.stage) 但没有运气。有什么帮助吗?
你可以这样做
parent["MyName"];
或者,主时间线的正确转换(在您的上下文中,父时间线的类型为 MainTimeline):
MainTimeline(parent).MyName;
父母永远是一个DisplayObjectContainer
,它没有您创建的特殊属性。如果您创建自定义属性,则需要先转换为具有这些自定义属性的类,然后才能通过名称访问它们。 (否则编译器不知道它们存在,并给出该错误)。
root
指的是 swf 的最顶层。您的主时间线实际上是 stage 的子级,因此主时间线上的 vars/objects/methods 不属于 stage 的一部分stage
如果您使用stage.addChild(MyBox)
, then stage
是父时间线,而不是主时间线。如果由于某种原因您需要将 stage 作为父级,那么您必须在可以访问的地方保留对 mainTimeline 的引用。您可以创建一个 var 来在 MyBox 时间线中执行此操作。
var mainTimeline:MainTimeline;
然后在主时间线代码中执行以下操作:
MyBox.mainTimeline = this;
然后你可以通过以下方式访问 MyBox 中的 varmainTimeline.MyName;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)