0

我有一个教育游戏,孩子们听到声音,然后必须从 3 个图像中选择正确的图像。

当他们想再次听到声音时,他们可以按下扬声器按钮。这 3 个图像是动态添加到舞台的动画剪辑(名为 card1、card2 和 card3),其中 buttonMode = true。

每当他们按下扬声器以再次听到声音或在按下错误图像时获得反馈时,我都会在声音持续时间内从卡片中删除 mouse_events。我还设置了 buttonMode = false,所以孩子们知道他们在播放声音时无法点击。

在 SOUND_COMPLETE 上,我再次添加了 eventListeners。现在 buttonMode = true 也再次出现。

我想刷新屏幕,例如 event.updateAfterEvent(); 所以光标会变成一只手,如果他们把它放在其中一张牌上的话。但是 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

In your addLst function, when cycling through the 4 cards, you could check for the current mouse position, and check if it is inside the boundaries of one of the cards.

It could work like this:

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

I am not 100% sure though if buttonMode changes it back to Arrow when the mouse leaves the object. I usually don't use buttonMode.

于 2012-05-24T10:59:59.343 回答