有時,我想將閉包推入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. 將XMM寄存器推入堆棧
- 4. 將數據推入堆棧,可信
- 5. 如何將0項推入int堆棧?
- 6. x86 - 將8位值推入堆棧
- 7. (OpenGL)將「舊」矩陣推入堆棧
- 8. 如何將scala.xml.Null推入堆棧[MetaData]?
- 9. 如何將對象推入堆棧?
- 10. JAVA - 你如何將一個字符串推入堆棧?
- 11. jQuery堆棧事件
- 12. 如何一次將一個字符串推入堆棧中的一個元素?
- 13. 推堆疊到另一個棧
- 14. 推UIPrintInteractionController到一個UINavigationController堆棧
- 15. Actionscript中的Movieclip堆棧
- 16. 將控件從一個堆棧面板移動到另一個堆棧面板
- 17. Actionscript 3 ContextMenu關閉事件?
- 18. Jquery單擊事件堆棧
- 19. 堆棧jQuery的ajaxComplete事件
- 20. 如何將最近彈出的元素從一個堆棧推送到另一個堆棧?
- 21. QPlainTextEdit - 手動推入撤消堆棧
- 22. UINavigationController的崩潰推3次入堆棧
- 23. 不插入新值的堆棧推 - C
- 24. 不能推視圖入堆棧
- 25. TTNavigator沒有推入導航堆棧
- 26. x86彙編,堆棧推入指令
- 27. 從堆棧彈出而沒有推入
- 28. 將堆棧的值分配給另一個堆棧
- 29. 將SKB推送到網絡堆棧
- 30. 使用jquery將事件添加到事件堆棧的頂部
謝謝 - 我會研究你提到的功能。 目標基本上是爲了讓我的意圖(「我想推動一個閉包到執行堆棧,所以它將在當前事件處理程序完成後執行一些不確定的時間」)在代碼中清除,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