有时候,我想把一个闭包推到ActionScript的事件堆栈上,以便它在当前的事件处理程序之后执行。现在我使用setTimeout(closure, 0)
。有更直接的方法吗?
答案 0 :(得分:4)
setTimeout(closure,0)正在创建一个新的事件堆栈。如果此解决方案不适合您,我不明白您的目标。你想要完成的目标是什么?
Flex具有ENTER_FRAME事件,Timer,callLater,setTimeout,setInterval,所有延迟调用和创建新执行堆栈。
您是否尝试将代码注入当前堆栈?如果是这样,您可能需要查看以下内容:http://en.wikipedia.org/wiki/Active_object。这个想法是你将函数(闭包)推入一个数组,当前一个运行完成时,活动对象控制器从列表中拉出下一个。这是最简单的情况。您可以编写一个更复杂的堆栈,它将具有高,中,低等优先级堆栈,并具有您自己的计划管理系统。 (例如,等待太久后,低级晋升)。
但是嘿!细节决定成败。目标是什么?
答案 1 :(得分:0)
看看as3事件的捕获和冒泡阶段。 我发现这个很好的章节清楚地解释了过程:http://books.google.com/books?id=yFNZGjqJe9IC&lpg=PA250&ots=oPB9HXIby7&dq=flash%20event%20bubbling%20phase&pg=PA250#v=onepage&q=&f=false
并检查EventDispatcher类文档,该文档解释了这些不同阶段的使用。