我在一个简单的幻灯片应用程序中使用as3-signals-v0.9-BETA。在我的信号处理程序中,我基于某些条件再次调度相同的信号。
应用程序在几个小时后对信号调度方法抛出异常。下面是堆栈跟踪:
错误:Error #1023: Stack overflow occurred.
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:cb-trunkSolutionsComponentsSlidelibsrccomchetansachdevcomponentsSlideDeck.as:75]
at org.osflash.signals::Slot/execute()[C:UsersRobertDocumentsFlashOSFlashsignalsas3-signalssrcorgosflashsignalsSlot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:UsersRobertDocumentsFlashOSFlashsignalsas3-signalssrcorgosflashsignalsOnceSignal.as:125]
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:cb-trunkSolutionsComponentsSlidelibsrccomchetansachdevcomponentsSlideDeck.as:89]
at org.osflash.signals::Slot/execute()[C:UsersRobertDocumentsFlashOSFlashsignalsas3-signalssrcorgosflashsignalsSlot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:UsersRobertDocumentsFlashOSFlashsignalsas3-signalssrcorgosflashsignalsOnceSignal.as:125]
...
...
方法:
mysignal.add(mySignalHandler);
function mySignalHandler():void
{
if(condition)
{
// do something here..
}
else
{
mysignal.dispatch();
}
}
能不能有人告诉我,怎么了。当我从信号处理程序调度时,堆栈被创建了吗?(我没有直接调用该方法,我正在调度一个信号)。
这是一个无限循环。就像这样写:
function inifityAndBeyond(){
infinityAndBeyond();
}
换句话说,在信号的处理程序中调度相同的信号是没有意义的。