无法将root转换为movieclip

时间:2014-03-30 23:48:07

标签: actionscript-3 casting root movieclip typeconverter

我在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,但是当我尝试跳过强制转换时,它无法使用该方法,因为它表示它是静态类型。如何访问此方法?

2 个答案:

答案 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

将所有内容保存在时间轴上是一种非常糟糕的方法(很遗憾地说)。