0

私がやりたいことは、オーバーリスナー関数を一度実行することです。問題は、ムービー クリップの「ボタン」にマウスを合わせると、新しいループに何度も入ることです。トゥイーンイベントが完了したときに一度だけ実行するにはどうすればよいですか?

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
}

function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
}
button.addEventListener(MouseEvent.MOUSE_OVER, Over);

button.addEventListener(MouseEvent.MOUSE_OUT, Out);
4

3 に答える 3

0

@loxxyのソリューションでうまくいくと思います。 最初にその解決策を試してください。

そうでない場合は、イベントが発生したらリスナーを削除してみてください。後で再度追加することもできます。

例えば:

function Over (e:MouseEvent):void
{
    button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
    [...]
}

function Out (e:MouseEvent):void
{
    button.addEventListener(MouseEvent.MOUSE_OVER, Over);
    [...]
}
于 2012-07-18T20:30:51.920 に答える
0

上記のコードに問題はありません。

コードをフレームスクリプトとして、つまりIDEのタイムラインのフレームに追加していると思います。

その場合はstop();、上記のコードスニペットの前に追加するだけです。

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

stop();

// ... rest of the code
于 2012-07-18T12:13:23.987 に答える
0

これら 2 つの MouseEvent を実行する場合は、removeEventListener を追加して作成します。

function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
}

function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OUT, Out);
}

button.addEventListener(MouseEvent.MOUSE_OVER, Over);
button.addEventListener(MouseEvent.MOUSE_OUT, Out);

Over を実行しているボタンにマウスを合わせると Out が実行され、1 つずつ実行されるループを作成する場合は、以下のコーディングを試すことができます。

function Over (e:MouseEvent):void
{
trace('Over');
var myTweenUp:Tween = new Tween(button, "y", Back.easeOut, 200, 180, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OVER, Over);
button.addEventListener(MouseEvent.MOUSE_OUT, Out);
}

function Out (e:MouseEvent):void
{
trace('Out');
var myTweenDown:Tween = new Tween(button, "y", Back.easeOut, 180, 200, 2, true);
button.removeEventListener(MouseEvent.MOUSE_OUT, Out);
button.addEventListener(MouseEvent.MOUSE_OVER, Over);
}

button.addEventListener(MouseEvent.MOUSE_OVER, Over);
于 2012-07-19T04:05:28.623 に答える