有时,我想将闭包推入ActionScript的事件堆栈,以便在当前事件处理程序之后执行。现在我使用setTimeout(closure, 0)
。有没有更直接的方法来做到这一点?ActionScript:将一个闭包推入事件堆栈?
回答
的setTimeout(闭合,0)是创建一个新的事件堆栈。如果此解决方案不适合您,我不明白您的目标。你试图完成什么目标?
Flex有ENTER_FRAME事件,定时器,使用callLater,setTimeout的,setInterval的,所有这些延迟调用,并创建新的执行堆栈。
你是不是想将代码注入当前栈?如果是这样,你可能需要看看这样的:http://en.wikipedia.org/wiki/Active_object。这个想法是你将函数(闭包)推入数组中,并且当前一个运行完成时,活动对象控制器将下一个从列表中拉出。这是最简单的情况。您可以编写一个更复杂的程序,使用您自己的日程管理系统来设置高,中,低优先级堆栈。 (例如,在等待时间过长后得到提升)。
但是,嘿!细节决定成败。目标是什么?
看看捕获和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类文档,解释使用这个不同的阶段。
对不起......我不太明白这是如何相关的。 – 2009-08-28 21:20:27
- 1. 将整数推入堆栈
- 2. 如何将对象推入堆栈?
- 3. x86 - 将8位值推入堆栈
- 4. 将XMM寄存器推入堆栈
- 5. 如何将scala.xml.Null推入堆栈[MetaData]?
- 6. JAVA - 你如何将一个字符串推入堆栈?
- 7. jQuery堆栈事件
- 8. Actionscript中的Movieclip堆栈
- 9. 将控件从一个堆栈面板移动到另一个堆栈面板
- 10. Actionscript 3 ContextMenu关闭事件?
- 11. Jquery单击事件堆栈
- 12. QPlainTextEdit - 手动推入撤消堆栈
- 13. TTNavigator没有推入导航堆栈
- 14. 不能推视图入堆栈
- 15. UINavigationController的崩溃推3次入堆栈
- 16. 从堆栈弹出而没有推入
- 17. 使用jquery将事件添加到事件堆栈的顶部
- 18. 传递一个UIView到下一个UIViewController被推入导航堆栈
- 19. 堆栈函数仅堆栈最后一个光栅文件
- 20. Python:插入一个项目到堆栈
- 21. 它是一种捕获闭包定义堆栈的方法吗?
- 22. UINavigationBar是否保留将UINavigationItems推入其堆栈?
- 23. 将整数的二维数组推入Java中的堆栈
- 24. iOS在tabbar应用程序中将视图推入堆栈
- 25. 覆盖drawRect:并将新的偏移CGContexts推入堆栈
- 26. 如何将“清除颜色”推入属性堆栈
- 27. 将半字节推入C中的整数堆栈
- 28. 有没有办法将MATLAB工作区推入堆栈?
- 29. 如何手动将堆栈条目推入vim tagstack?
- 30. 将堆栈模板包含到另一个中
谢谢 - 我会研究你提到的功能。 目标基本上是为了让我的意图(“我想推动一个闭包到执行堆栈,所以它将在当前事件处理程序完成后执行一些不确定的时间”)在代码中清除,setTimeout( ...,0)“并不觉得它让事情变得非常清晰(当然,除非你对setTimeout的内部工作有所了解)。 – 2009-09-04 14:01:39
好吧,所以callLater不是我正在寻找的东西...但它可能是我会得到的最好的,谢谢。 – 2009-09-04 14:05:26
不要讨厌setTimeout。自JavaScript早期开始就已经存在。但是如果你需要它来实现任意的延迟,那么你的设计可能有问题。我从来没有发现callLater所有可靠的“等待”。至少在setTimout中,你知道你等待了多久,即使它是黑客。 – Glenn 2009-09-04 21:48:41