1

ボタンを使ったクイズを作成しています。ActionScript 3.0 は初めてですが、2.0 には慣れています。

MC 内に NextQuestion という変数があります。特定のフレームに到達すると 1 に変化し、その後 0 に戻ります。

メインのタイムラインでは、NextQuestion == 1 のとき、NextFrame(); のはずです。私はそれを機能させることはできませんが、これは私が問題を抱えている最後のことです.

これは私のメインコードで、4 つのボタン、3 つの間違い、1 つの正しいボタンがあります。フィードバック MC はアニメーションを再生し、それが終了すると、VAR NextQuestion を 1 に設定します。これは、メイン タイムラインを NextFrame に進めることになっています。

stop();

right.addEventListener(MouseEvent.CLICK, rightClick1);
wrong1.addEventListener(MouseEvent.CLICK, wrongClick1);
wrong2.addEventListener(MouseEvent.CLICK, wrongClick1);
wrong3.addEventListener(MouseEvent.CLICK, wrongClick1);
feedback1.addEventListener(Event.ENTER_FRAME, answerRight1);

function answerRight1()
{
    if (feedback1.NextQuestion == 1)
{
    trace(feedback1.NextQuestion);
    nextFrame();
}
else
{
    trace("do nothing");
}
 }

function rightClick1(ev:MouseEvent):void
{
trace(feedback1.NextQuestion);
feedback1.gotoAndPlay("right1");
}

function wrongClick1(ev:MouseEvent):void
{
trace("wrong");
feedback1.gotoAndPlay("wrong");
}

どんな助けでも大歓迎です!:)

4

1 に答える 1

0

AS3 の nextFrame() メソッドは、ムービークリップをループ処理しません。次のフレームがある場合は、ムービー クリップを次のフレームに設定するだけです。それ以外の場合は何もしません。

nextFrame() を次のように書き直すことをお勧めします。

if (totalFrames == currentFrame)
{
    gotoAndStop(1); // or gotoAndPlay(1) if you need
}
else
{
    nextFrame();
}

これが、ムービー クリップが最初から開始されない理由に関するものです。

奇妙に見えるもう 1 つの点は、答えが正しいかどうかを確認するために FRAME_ENTER イベントが必要なことです。出力ログには大量のスパムが含まれているはずです。これについては、ENTER_FRAME イベント リスナーを完全に捨てて、CLICKED イベントを使用し、feedback1 オブジェクトからイベントをディスパッチすることをお勧めします。

ボタンをクリックするとムービークリップが再生され、アニメーションが終了すると、次のフレームに進むか、何もしないでください。その場合、feedback1 オブジェクトで、ラベル「right1」のアニメーションの最後に次の行を追加します。

dispatchEvent(new Event("right"));

行の代わりに次のものがfeedback1.addEventListener(Event.ENTER_FRAME, answerRight1);あります。

feedback1.addEventListener("right", answerRight1);

そうすれば、すべてのフレームで答えをチェックする必要がなくなり、答えが正しいかどうかをチェックする必要もなくなりますdispatchEvent(new Event("right"));

私があなたの質問を誤解していないことを願っています:)

于 2013-08-27T01:48:26.777 に答える