2012-05-24 98 views
0

我有一個教育遊戲,孩子們聽到一個聲音,然後必須從3個圖像中選擇正確的圖像。AS3 CS5如何在SOUND_COMPLETE後刷新舞臺?

當他們想要再次聽到聲音時,可以按下揚聲器按鈕。 3個圖像是動態添加到舞臺的movieclip(名爲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後變回手?

Here's一些代碼:

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; 
     } 
    } 
+0

完成刪除對象並將它們添加到舞臺上。這可能會解決你的探頭問題,而不是最好的,但可能有所幫助。 – ymutlu

+0

如果下面的答案不起作用,我會提出你的建議。我的遊戲並不複雜,讓它工作比完善代碼更重要。然而,TheSHEEP提出了一個很好的答案,所以你可能想看看:) – silvith

回答

0

在你addLst功能,通過4張牌騎車時,你可以檢查當前鼠標的位置,並檢查它是否是邊界之內其中一張牌。

它可以像這樣工作:

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

我不是100%肯定,但如果buttonMode換了回來,當鼠標離開對象箭頭。我通常不使用buttonMode。

+0

這很好用:D我開始迴避Mouse.cursor,因爲我用它的時間,它弄亂了我的按鈕的鼠標行爲。 – silvith

+0

是的,如果你不控制它,它往往會這樣做。但如果它在這種情況下工作,所有更好:) – TheSHEEEP