在as3中捕获导致错误的异步事件

时间:2011-08-29 05:24:35

标签: flash actionscript-3 asynchronous yahoo-astra

我正在使用正在使用fl库的astra库。

我遇到的问题是我得到错误,有些可以重现,有些看似随机。

我依赖于定时器驱动的大量数据,但是所有这些UIComponents都会同时与之交互。

问题1: 我有一个视图,其中有一个文本区域,上面有一堆标签。如果我在视图跳转到另一帧时滚动文本区域,我在fl.controls::ScrollBar/thumbReleaseHandler()

处得到#1009空对象错误

问题2: 第二个似乎是间歇性的,我无法一致地重现它,但我确信当用户与它交互时,计时器会重新绘制当前标签视图。

TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/drawBackground()
at fl.controls::LabelButton/draw()
at fl.controls::Button/draw()
at fl.core::UIComponent/callLaterDispatcher()

有没有办法在它们导致对象抛出这些错误之前捕获这些事件?

1 个答案:

答案 0 :(得分:1)

如果您需要Flash Player 10.1,则可以尝试使用新的全局异常处理API:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/UncaughtErrorEvents.html

它仍然没有捕获所有未被捕获的错误(最明显的是在加载到AS3 SWF后抛出AS2错误),但它可能会处理你的错误。

除此之外,您可以浏览代码并调试这些实例。如果您正在运行SWF的调试版本,则应该获取行号以指向违规代码。解决方案通常只是进行空检查,如果没有对象的引用,则忽略该操作。