好的我有一个简单的flash文件,因为我试图完成从影片剪辑中的主舞台访问变量。我从谷歌找到的所有东西都指向MovieClip(root)。但它不适合我。
在主时间轴上:
var MyName:String;
MyName = "kenny";
然后我有一个名为MyBox的movieclip,其代码为:
trace(MovieClip(root).MyName);
我收到此错误:TypeError:错误#1034:类型强制失败:无法将flash.display :: Stage @ 2d2df089转换为flash.display.MovieClip。 在MyBox / sendpmtext()
我也尝试过MovieClip(父级),MovieClip(parent.parent),MovieClip(舞台),MovieClip(this.stage)而且没有运气。有什么帮助吗?
答案 0 :(得分:3)
你可以做到
parent["MyName"];
OR,主时间轴的正确转换(在您的上下文中,父类型为MainTimeline):
MainTimeline(parent).MyName;
父级始终为DisplayObjectContainer
,它没有您创建的特殊属性。如果您创建自定义属性,则需要先转换为具有这些自定义属性的类,然后才能按名称访问它们。 (编译器否则不知道它们存在,并为您提供该错误。)
root
指的是瑞士法郎最顶级的舞台。您的主时间轴实际上是舞台的孩子,因此主时间轴上的vars / objects / methods不属于stage
如果您使用stage.addChild(MyBox)
,则stage
是父级,而不是主时间轴。如果由于某种原因你需要将stage作为父级,那么你必须在可以访问的地方保留对mainTimeline的引用。您可以在MyBox时间轴中创建一个var来执行此操作。
var mainTimeline:MainTimeline;
然后在主时间轴代码中,执行以下操作:
MyBox.mainTimeline = this;
然后,您可以通过mainTimeline.MyName;
答案 1 :(得分:0)
Stage
为DisplayObject
,但不是MovieClip
。尝试使用强制
DisplayObject(stage)
或
DisplayObjectContainer(stage)
并访问自定义属性:
DisplayObject(this)["MyName"]