我在主时间线中的舞台上调用了Movieclip中的代码
if(MovieClip(root).isWithinRange(MovieClip(e.currentTarget), MovieClip(root).hero, 10))
{
if(e.currentTarget.getStatus() == 0)
{
e.currentTarget.unlock();
}
}它在根目录(MovieClip)给出了一个错误。我试着跟踪它,它给了我同样的错误。
Type Coercion failed: cannot convert flash.display::Stage@4e131e9 to flash.display.MovieClip.跟踪根可以得到Object Stage。
所以我不能将Stage对象转换为MovieClip,但是当我尝试跳过强制转换时,它不能使用该方法,因为它说明它是一个静态类型。如何访问此方法?
发布于 2014-03-31 10:03:20
这是因为stage是DisplayObject而不是MovieClip。因此,您可以将其转换为MovieClip:
var stageRef:MovieClip = this.parent as MovieClip; 如果对象放置在stage - stage.addChild(yourObject);上
或者您可以通过DisplayObject访问它(确保导入flash.display.DisplayObject;)
DisplayOject(stage)["nameOfUrObject"];发布于 2014-03-31 16:36:26
这里真正的答案是Stage不是MovieClip。句号。
你不能做你想做的事情,我显然不能理解这个isWithinRange方法是从哪里来的?如果你想知道答案,可以问一些具体的问题。我已经回答了这个问题,不幸的是,它对您没有太大帮助:)
附注:在阅读完所有评论后-这里有一个可能对你有帮助的链接:AS3 - Call function in root timeline from class
让一切都保持在时间线上是一个非常非常糟糕的方法(很抱歉这么说)。
https://stackoverflow.com/questions/22751441
复制相似问题