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 は間隔を破棄します。setInterval はそれを作成し、それを破棄するために clearInterval に入れることができる数値を返します。

また、setTimeout は一度だけ実行します。

また、関数の後に時間をミリ秒単位で指定する必要があります。

制御と読み取りが容易なため、Timer クラスを使用することを常にお勧めします。

于 2013-06-26T11:17:53.910 に答える
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 に答える