2014-03-30 69 views
0

我有一个影片剪辑这段代码被称为搬上舞台主时间轴无法转换根影片剪辑

if(MovieClip(root).isWithinRange(MovieClip(e.currentTarget), MovieClip(root).hero,  10)) 
{ 
    if(e.currentTarget.getStatus() == 0) 
    { 
     e.currentTarget.unlock(); 
    } 
} 

,这让我在影片剪辑(根)错误。我试图追查,它给了我同样的错误。

Type Coercion failed: cannot convert flash.display::[email protected] to flash.display.MovieClip. 

跟踪根给我载物台。

所以我不能将Stage对象转换为MovieClip,但是当我试图跳过转换时,它不能使用该方法,因为它说它是一个静态类型。我如何访问此方法?

回答

0

这是因为stage是DisplayObject而不是MovieClip。所以,你可以把它转换成影片剪辑:

var stageRef:MovieClip = this.parent as MovieClip; 

如果对象是在舞台上placen - 阶段 .addChild(yourObject);

,或者您可以通过存取权限的DisplayObject它(确保导入flash.display.DisplayObject;)

DisplayOject(stage)["nameOfUrObject"]; 
+0

第一个给了我stageRef的null。 如果我要尝试第二个,那么“nameOfUrObject”是什么?我试图调用的函数或根或e.currentTarget? – user2956947

+0

这是你的对象。你已经进入舞台的那个人。 如果什么都不起作用,我会在我醒来时检查它。 – raco

+0

所以你可以通过DisplayObject(stage)和DisplayOject(stage)访问舞台[“nameOfUrObject”]你可以访问放置在舞台上的对象。进入[]只是给它的实例名称。 – raco

0

这里真正的答案是,阶段不是影片剪辑。期。

你不能做你想做的事情,我显然不明白这个方法来自哪里?如果您想要答案,请提出具体问题。我已经回答了这个问题,不幸的是它对你的帮助不大:)

p.s. 阅读所有的意见后 - 这里有一个链接,可以帮助你:AS3 - Call function in root timeline from class

保持时间轴上的一切是一个非常非常糟糕的做法(遗憾地说)。

+0

我无法访问主时间轴上的方法? isWithinRange是主时间轴上第一层的一种方法 – user2956947

+0

我很喜欢使用类,但是我们在这个闪光过程中不这样做 – user2956947