1

我创建了一个简单的图像列表,每 60 秒重新加载一次。但是,我注意到当重新加载过程开始时,Flash 似乎挂起或至少不接受/记住任何鼠标输入。

具体来说,虽然它应该被冻结,但我尝试单击一个按钮来执行它的通常功能,目前它只是显示鼠标按下状态,但它不会注册点击,直到假定的冻结结束之后。这导致我不得不再次点击。

我真的需要知道,如果我正在加载 5 个小 png 图像(循环调用load()5 次),这是否会导致 Flash 挂起并忽略任何鼠标输入,或者我是在说疯话,应该在其他地方寻找问题。

我知道 Flash 不是多线程的,但调用肯定load()不会导致整个应用程序自行关闭 100-200 毫秒?

非常感谢任何输入,谢谢。

4

3 回答 3

2

回应您的评论:

除了说 Loader 对象实际上加载了一个 swf 或某种类型的显示对象,然后 flash 在内部修改二进制数据,然后在内部解析 SWF 或位图类型并将其呈现给 .content 显示之外,无法再给出明确的证据Loader 对象中的对象。没关系在这一切之前调度获取二进制数据的 URL 请求。在 loader 对象的背景中发生了很多事情。如果您想证明二进制数据的修改,只需加载图像,然后将字节从加载器中复制出来并将其保存在某处。然后与原始数据进行比较。您将在那里看到修改,事实上,如果您将输出字节保存回图像并尝试使用图像查看器打开它,它将无法正常工作,这也是修改的证明。除此之外,您可以发布一个指向 SWF 的链接,并让其他人在这里测试它以确认同样的事情发生在他们身上,我相信它会发生。这大约是您将获得的最多证据,因为任何与加载器或显示对象相关的代码都是封闭源代码,并且不包含在 Tamarin 项目中,即闪存 VM 的开源部分。

于 2011-08-10T23:58:21.210 回答
1

关于冻结 — 阅读有关 LoaderContext#imageDecodingPolicy 的信息并在此处查看http://www.bytearray.org/?p=2931

于 2011-08-11T14:33:15.740 回答
0

要回答我自己的问题,不,没有滞后或挂起。Flash 可以很好地处理所有事情,事实证明,您在使用时应该小心,MouseEvent.CLICK因为如果您在完成 mousedown 之后但在 mouseup 之前在重新加载期间交换图像对象,flash 不会像您那样调度点击事件' t 导致同一对象上的 mousedown 和 mouseup。这显然让我觉得有一个滞后,因为 Flash 似乎没有注册我的鼠标点击。

感谢所有试图解决问题的人。

于 2011-08-11T10:37:48.447 回答