任何碰巧知道如何做到这一点的人都会帮助我。
也许它很简单,我不知道,但它涉及嵌入式SWF,所以我想它可能需要与嵌入式SWF中的事件处理程序或方法进行交互。
但无论如何,这是:
我在画布上有几个嵌入式SWF(在SWFLoader中),当其中一个在视觉上发生变化时,我需要知道哪个更改了。
'render'事件仅提供解决方案的一部分:
如果SWFLoader包含视频显示,则在该视频显示正在运行时,在父应用中会生成连续的渲染事件。如果SWFLoader只包含一些静态输入控件otoh,那么在父应用程序中没有呈现消息,直到某人与该控件交互并在视觉上进行更改,然后在父应用程序中广播呈现事件。所以,这显然是我的要求的一部分。
渲染事件的问题是,不告诉你哪个嵌入式SWF实际发生了变化(在target或currentTarget中)。
但我需要知道哪一个改变了。
(例如,是否在嵌入式应用程序中生成单独的渲染消息(与父应用程序中的应用程序分开),可以检测到。)
答案 0 :(得分:1)
我的解决方案如下:
当渲染事件发生时,我检查浏览器窗口中是否有可见的swfloader,然后我将其内容的BitmapData.draw写入保存的bitmapdata。对于每个新的渲染事件,我将保存的位图的10%的像素与新的位图进行比较,这将告诉我嵌入的.swf可视内容是否已实际更改。事实证明,10%的样本已经足够了(只需迭代各个位图的向量,向量索引递增10,而不是1。)
BitmapData.draw非常快,迭代10000个向量元素就像一毫秒。