2014-09-05 34 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