我在简单的幻灯片应用程序中使用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();
}
}
有人可以指出我,出了什么问题。当我从信号处理程序调度时,是否创建了堆栈? (我不直接调用方法,我正在发送信号)。
答案 0 :(得分:0)
这是一个无限循环。这就像写这个:
function inifityAndBeyond(){
infinityAndBeyond();
}
换句话说,在信号处理程序中调度相同的信号是没有意义的。