如何删除函数或事件从as3中的stage.addEventListener中停止它

时间:2013-06-23 14:43:24

标签: actionscript-3 flash flash-cs5 flashdevelop

我试图让对象跟随as3中的鼠标。 我的愿望是,当我滚动一个movieclip(btn1)时,我希望使对象跟随鼠标的功能(my_object)停止,直到我滚出它。 这是脚本:

btn1.addEventListener(MouseEvent.ROLL_OVER, JD);

function JD(event:MouseEvent):void{
stage.removeEventListener(Event.ENTER_FRAME, follow_me);

}

btn1.addEventListener(MouseEvent.ROLL_OUT, kk);

function kk(event:MouseEvent):void{
play();
}

stage.addEventListener(Event.ENTER_FRAME,follow_me)
function follow_me(event:Event):void {

var dx:int = bracketL.x - mouseX;
var dy:int = bracketL.y - mouseY;
 my_object.x -= dx / 9+5;
 my_object.y -= dy /9;
}

即使我翻过btn1,my_object也没有停止,它仍然跟着鼠标! 我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用不同的方法实现更流畅的动画,您可以创建一个输入框处理程序来检查paused状态变量。

每个框架,您的对象都按照鼠标光标进行动画处理;但是,如果鼠标滚过按钮,对象将暂停跟踪鼠标。

  

mouse-follow

代码:

import flash.events.Event;
import flash.events.MouseEvent;

var paused:Boolean = false;

addEventListener(Event.ENTER_FRAME, frameHandler);
button.addEventListener(MouseEvent.ROLL_OVER, buttonOverHandler);
button.addEventListener(MouseEvent.ROLL_OUT, buttonOutHandler);

function buttonOverHandler(event:MouseEvent):void
{
    paused = true;
}

function buttonOutHandler(event:MouseEvent):void
{
    paused = false;
}

function frameHandler(event:Event):void
{
    if (!paused)
    {
        object.x -= (object.x - mouseX) * 0.1;
        object.y -= (object.y - mouseY) * 0.1;
    }
}