我在Movieclip中有这个代码,它被调用到主时间轴
的舞台上if(MovieClip(root).isWithinRange(MovieClip(e.currentTarget), MovieClip(root).hero, 10))
{
if(e.currentTarget.getStatus() == 0)
{
e.currentTarget.unlock();
}
}
它在MovieClip(root)上给我一个错误。我试着跟踪它,它给了我同样的错误。
Type Coercion failed: cannot convert flash.display::Stage@4e131e9 to flash.display.MovieClip.
跟踪root给了我Object Stage。
所以我无法将Stage对象转换为MovieClip,但是当我尝试跳过强制转换时,它无法使用该方法,因为它表示它是静态类型。如何访问此方法?
答案 0 :(得分:0)
这是因为stage是DisplayObject而不是MovieClip。所以你可以把它转换成MovieClip:
var stageRef:MovieClip = this.parent as MovieClip;
如果对象已放置在舞台上 - 舞台 .addChild(yourObject);
或者您可以通过DisplayObject访问它(确保导入flash.display.DisplayObject;)
DisplayOject(stage)["nameOfUrObject"];
答案 1 :(得分:0)
这里真正的答案是舞台不是MovieClip。周期。
你无法做你想做的事情,我显然无法理解这个isWithinRange
方法来自哪里?如果您想要答案,请询问具体问题。我已经回答了这个问题,不幸的是它对你没什么帮助:)。
P.S。 阅读完所有评论后 - 这里有一个可以帮助您的链接:AS3 - Call function in root timeline from class
将所有内容保存在时间轴上是一种非常糟糕的方法(很遗憾地说)。