2

我是 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 中是否可以使用回调函数?如果没有,如何解决这样的问题?

我将非常感谢您的帮助:)

4

2 回答 2

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);
        }
于 2013-06-26T11:23:38.383 回答
0

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

setTimeout 也只执行一次。

您还需要在函数之后指定一个时间,以毫秒为单位。

我将始终建议您使用 Timer 类,因为您可以控制它并轻松阅读它。

于 2013-06-26T11:17:53.910 回答