2012-05-24 2 views
0

У меня есть образовательная игра, в которой дети слышат звук, а затем должны выбрать правильное изображение из 3-х изображений.AS3 CS5 Как обновить сцену после SOUND_COMPLETE?

Когда они снова услышат звук, они могут нажать кнопку динамика. 3 изображения - мувиклипы (названные card1, card2 и card3), динамически добавленные к сцене, с кнопкойMode = 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

Смежные вопросы