2014-09-05 14 views
0

問題:操作腳本3無功能監聽器

有沒有一種方法可以在不調用函數的情況下使用點擊式監聽器?我只是在昨天開始採取行動腳本,所以請原諒我的問題看起來天真。

理由問:

我希望能跳出while循環時MouseEvent.OnClick發生。在監聽功能只爆發爲自己定義的函數,而不是while循環我陷在使用功能時的問題。

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 2014-09-05 08:32:30

+0

是的初學者需要知道的第一件事是如何標籤循環.... – BotMaster 2014-09-05 11:31:38

回答

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 2014-09-05 09:04:41

+0

您的程序凍結後將不會收到事件。您可以通過控制「enabled」屬性來禁用應用程序(或任何精靈)。 – Crabar 2014-09-05 09:11:48

+0

寶並不是as3的新手,他是編程新手。答案也被拒絕了,無限循環只是單線程技術的一個問題的想法被誤導,無限循環凍結和任何技術的應用程序崩潰。 – BotMaster 2014-09-05 11:29:34