0
我在一個簡單的幻燈片應用程序中使用as3-signals-v0.9-BETA。在我的信號處理程序中,我基於某些條件再次調度相同的信號。錯誤1023與as3-signals-v0.9-BETA的堆棧溢出
應用程序在信號調度方法幾個小時後引發異常。下面是一個堆棧跟蹤:
錯誤:
Error #1023: Stack overflow occurred.
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:\cb-trunk\Solutions\Components\Slidelib\src\com\chetansachdev\components\SlideDeck.as:75]
at org.osflash.signals::Slot/execute()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\Slot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\OnceSignal.as:125]
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:\cb-trunk\Solutions\Components\Slidelib\src\com\chetansachdev\components\SlideDeck.as:89]
at org.osflash.signals::Slot/execute()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\Slot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\OnceSignal.as:125]
...
...
方法:
mysignal.add(mySignalHandler);
function mySignalHandler():void
{
if(condition)
{
// do something here..
}
else
{
mysignal.dispatch();
}
}
能有人指出我,什麼是錯的。當我從信號處理程序調度時,堆棧是否已創建? (我不是直接調用方法,而是調度信號)。
Thx爲您的答覆。我不直接從處理程序調用方法。我正在發送一個事件/信號,所以我不認爲這是一個無限循環。如果我在方法結束之前放置了一條跟蹤語句,它會被執行。 –
然後,您需要更新您問題中的代碼以更好地表示情況。就像現在這樣,它就像遞歸地調用同一個方法一樣。信號沒有自動異步延遲。 – Creynders
有道理。我嘗試調用另一種方法,並刪除所有信號並只添加一次監聽器。幾個小時後,我仍然得到例外。我將以另一種方式實現它,我不必再次調用相同的方法。感謝您的回答 :) –