2014-09-05 3 views
0

Вопрос:Действия Скрипт 3 Слушатель без функции

Есть ли способ использовать прослушиватель по нажатию кнопки без вызова функции? Я только вчера начал скрипты действий, поэтому, пожалуйста, извините, если мой вопрос кажется наивным.

Причина Для Вопрос:

Я надеюсь вырваться из некоторое время петли, когда MouseEvent.OnClick происходит. Проблема заключается в том, когда с помощью функции в функции прослушивателя она влезает только из функции, определенной для себя и не в то время как петли я застрял в.

function PlayGame():Void { 
    while (true) { 
     OnAndOff.addEventListener(MouseEvent.CLICK):void{ //Removed the ,function part 
      PowerButton.Switch(); 
      break; 
     } 
    } 
} 
+0

Crabar прав, и вы не должны вводить свою логику в такой бесконечный цикл. Однако, просто чтобы вы знали, что вы можете пометить свои петли в actionscript 3. http://stackoverflow.com/questions/15780167/does-as3-support-loop-label – Ingweland

+0

Да, первое, что новичок должен знать, это как метки петли .... – BotMaster

ответ

0

Это не лучший способ, чтобы использовать бесконечный цикл в as3, причина as3 имеет один поток. Это означает, что приложение замерзает, когда вы начнете свой бесконечный цикл. AS3 имеет основанную на событиях архитектуру, поэтому любое взаимодействие с пользователем отправляет некоторые события.

Если вам нужно вызвать PowerButton.Switch(), когда пользователь нажимает на OnAndOff просто вызовите его в обработчик события:

OnAndOff.addEventListener(MouseEvent.CLICK, onOnAndOffClick); // somewhere on initialize 

function onOnAndOffClick(event:MouseEvent):void { 
    PowerButton.Switch(); 
} 

Если вам необходимо использовать подход, аналогичный бесконечный цикл вы можете использовать ENTER_FRAME событие:

stage.addEventListener(Event.ENTER_FRAME, someFunction); 

function someFunction(event:Event):void { // this function will be called automatically on each frame 
    // some code... 
} 
+0

Ну, я хочу, чтобы программа замерзала. Дело не в выражении Switch(), а в While {break;}, потому что предполагается симулировать состояние «Off». Нажатие кнопки приведет к ее разрыву с момента запуска программы и запуску программы. Есть ли способ сделать это? – Cornelis

+0

Ваша программа не получит событий, когда она замерзает. Вы можете отключить приложение (или любой спрайт), контролируя свойство «включено». – Crabar

+0

po не только новичок в as3, он новичок в программировании. Ответ проголосовал также, идея о том, что бесконечный цикл является проблемой только для однопоточных технологий, является ошибочным, бесконечным циклом замораживания и сбоями приложений с любой технологией. – BotMaster

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