ActionScript3,MovieClip类型的移动对象



在这里,我正在尝试创建一个新的MovieClip类型对象,该对象在调用函数MVBALL时被移动。当我运行代码时,我会得到此err:具有静态类型对象的值的隐式胁迫可能是无关类型的flash.display:movieclip。稍后,我希望能够使球与另一个物体融合时反弹。我是动作脚本的新手,并不真正知道事情的工作原理,因此将不胜感激。这是代码:

private function frame(x:Event):void {
        var ball:MovieClip = new MovieClip();
        ball.addEventListener(Event.ENTER_FRAME, animate);
        ball.graphics.beginFill(0xff0000); 
        ball.graphics.drawCircle(100, 100, 15); 
        ball.graphics.endFill(); 
        stage.addChild(ball); 
    }
    private function animate(ev:Event):void {
        mvBall(ev.target);
    }
    private function mvBall(mc:MovieClip) {
        mc.x += 10;
    }

您需要将目标投放到movieclip

private function animate(ev:Event):void {
    mvBall(ev.target as MovieClip);
}

这样说,最好只有一个Enter_frame处理程序并在其中对您的对象进行动画。

stage.addEventListener(Event.ENTER_FRAME, animate);
private function animate(ev:Event):void
{
    mvBall(myBall);
    //other object animations
}

您正在遇到此错误,因为事件类的target属性是类型对象。

为了不丢失错误,您需要将其施放为MovieClip:

mvBall(ev.target as MovieClip);

myBall(MovieClip(ev.target));

其他要考虑的东西是Event S targetcurrentTarget属性之间的区别。如果您的球内有多个层/对象(Sprites或其他MovieClips),则target是在单击时将鼠标覆盖在其上方的任何一个子元素。currentTarget指的是您附加了侦听器的对象。在您的情况下,它们可能是相同的(如果您的球里没有任何电影片段),但是如果您的球内有子胶片,则代码可能会产生意外的结果。

最新更新