clearInterval上的Flash AS3回调函数

时间:2013-06-26 11:13:06

标签: actionscript-3 flash

我是Flash ActionScript 3.0的新手。我需要setInterval上的回调函数,我确实喜欢

有一个叫做ownmouse的篮子。它附有鼠标。

ownmouse.addEventListener(Event.ENTER_FRAME,fun);
function fun(Eve:Event) {
    ownmouse.startDrag(true);
    Mouse.hide();
}

使用setInterval从flash文档顶部落下球。

var myInterval = setInterval(fallBall,1);
ownmouse.addEventListener(Event.ENTER_FRAME,controlCursor);


function controlCursor(MouseMove:Event) {
    var xaxis:int = mouseX;
    var yaxis:int = mouseY;
    var ballXaxis = ball.x;
    var ballYaxis = ball.y;

    if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
    clearInterval(myInterval, function() {
        myBall.gotoAndPlay(10)
    });
    }

    if(yaxis>620) {
        ownmouse.stopDrag();
        ownmouse.y = 620;
        Mouse.show();
    } else if(yaxis<420) {
        ownmouse.stopDrag();
        ownmouse.y = 430;
        Mouse.show();
    }
}

除了以下代码之外,一切都很顺利:

clearInterval(myInterval, function() {
        myBall.gotoAndPlay(10)
    });

AS3中是否可以使用回调功能?如果没有,如何解决这样的问题?

我非常感谢你的帮助:)。

2 个答案:

答案 0 :(得分:0)

clearInterval会破坏间隔。 setInterval创建它并返回一个数字,您可以将其放入clearInterval中以销毁它。

setTimeout也只执行一次。

您还需要指定函数后的时间(以毫秒为单位)。

我总是建议你使用Timer类,因为你可以控制它并轻松阅读。

答案 1 :(得分:0)

clearInterval没有回调。如果满足破坏它的要求,你可以自己触发一个方法。 根据您的需要,计时器可能是更好的选择。

var myTimer:Timer = new timer(1000,8);// set amout 
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.addEventListener(TimeEvent.TIMER_COMPLETE, timerDone);

function timerListener (e:TimerEvent):void{
 trace("Timer is Triggered");
}
 function timerDone(e:TimerEvent):void{
 trace("Timer finishing!");
}
myTimer.start();

修改 就像我说的b4,你可以在满足要求时触发自己的方法。在您使用更新源的情况下:

if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
    clearInterval(myInterval);
    intervalDestroyed();
    }

function intervalDestroyed():void
{
  trace("Intervall has been cleared");
  myBall.gotoAndPlay(10);
}

如果这是你要做的唯一事情,你可以在if:中调用你需要的任何东西:

if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
        clearInterval(myInterval);
        myBall.gotoAndPlay(10);
        }