0

私は子供たちが音を聞いて、3つの画像から正しい画像を選択しなければならない教育ゲームを持っています。

もう一度音を聞きたいときは、スピーカーボタンを押すことができます。3つの画像は、buttonMode = trueを使用して、ステージに動的に追加されたムービークリップ(card1、card2、card3という名前)です。

スピーカーを押してもう一度音を聞いたり、間違った画像を押した場合にフィードバックを受け取ったりするたびに、音が鳴っている間、カードからmouse_eventsを削除します。また、buttonMode = falseを設定して、サウンドの再生中はクリックできないことを子供たちが知っているようにします。

SOUND_COMPLETEで、eventListenersを再度追加します。これで、buttonMode=trueも再びtrueになります。

event.updateAfterEvent();のように画面を更新したい。そのため、カーソルがカードの1つに置かれている場合は、カーソルが手札に変わります。ただし、event.updateAfterEvent()をSOUND_COMPLETEにアタッチすることはできません。使用できるのは、MOUSEやGESTUREなどのインタラクションイベントの後でのみです。

tldr; SOUND_COMPLETEの後でカーソルが手に戻るように、ステージを更新するにはどうすればよいですか?

コードの一部を次に示します。

    function speakerClick(event:MouseEvent):void
    {
        remLst();
        SoundMixer.stopAll();
        cardCnl = gameSnd.play();
        cardCnl.addEventListener(Event.SOUND_COMPLETE, sndComplete);
    }
    function sndComplete(event:Event):void
    {
        cardCnl.removeEventListener(Event.SOUND_COMPLETE, sndComplete);
        addLst();           
    }

    function addLst():void
    {
        for (var i:int = 1; i < 4; i++)
        {
            var card:Card = getChildByName("card" + i) as Card;
            card.addEventListener(MouseEvent.CLICK, fnClick);
            card.addEventListener(MouseEvent.MOUSE_OVER, fnOver);
            card.addEventListener(MouseEvent.MOUSE_OUT, fnOut);
            card.buttonMode = true;
        }
    }
4

1 に答える 1

0

addLst関数で、4枚のカードを循環するときに、現在のマウスの位置を確認し、それが1枚のカードの境界内にあるかどうかを確認できます。

これは次のように機能する可能性があります。

if ( mouseX > card.x && mouseX < (card.x + card.width)
     mouseY > card.y && mouseY < (card.y + card.height))
{
    Mouse.cursor = MouseCursor.BUTTON;
}

マウスがオブジェクトを離れたときにbuttonModeがそれをArrowに戻すかどうかは、100%わかりません。私は通常buttonModeを使用しません。

于 2012-05-24T10:59:59.343 に答える