2011-12-01 75 views
2

我有一个图像被动态加载并被添加到我的大型应用程序中。在屏幕上显示对象后触发了一个Flex事件

加载图像后,我想为显示目的抓取显示器的位图。

问题是我找不到任何保证被触发的事件图像在屏幕上呈现。

FlexEvent.CREATION_COMPLETE听起来最接近纸张,但似乎没有办法。

为了测试,我在事件触发的处理程序的末尾添加了一个断点,并在断点触发时查看图像是否在屏幕上。

我被迫使用flex 3.3。

回答

0

您是否尝试过FlexEvent.SHOW事件?

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#event:show

编辑:

如果你能找到的数据被加载(Event.COMPLETE或FlexEvent.CREATION_COMPLETE或别的东西),之后被触发的事件,你也许能逃脱做一个callLater()并假定图像将被下一帧渲染。一种黑客,但它可能是值得一试。

+0

FlexEvent.SHOW在任何时候都不会被调用,我相信这只适用于当一个对象被显式地从不可见中变为可见时,而对于正常的图像加载,它会从未定义的直线变为可见。 –

+0

我已经用我可能会尝试的其他东西更新了我的答案。 –

+0

谢谢,但我已经尝试过(我也尝试过5次嵌套的callLater(),它工作了一小段时间)。 –

2

图像是一种特殊情况 - 在加载和渲染图像数据本身之前,组件可以在显示列表中完整且可见。

对于s:Image,请查看Image.ready事件。

如果您使用的是mx:Image,请改用Image.complete。 (还有一个s:Image.complete --see它从ready有什么不同的意见flexdoc)

+0

快速侦察的文档显示,该事件不适用于我被强制使用的flex 3.3。我现在更新了这个问题。 –

0

MX图像上有一个完整的事件,我认为是你在找什么。仅供参考,每个课程在其语言参考页面中都有一个名为“活动”的部分。通过这些并尝试看起来很可能的事情通常很有启发性。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Image.html#eventSummary

+0

我已经尝试捕获该事件,并且它在图像加载完成时似乎被解雇(正如人们所期望的那样),*不*当图像必然到达屏幕时。 –

+0

您应该能够在该点捕捉图像的像素,除非您尝试捕捉的不仅仅是图像。但是,如果在reg'lar complete中为updateComplete添加一个事件侦听器,则应该发现在那一刻完成了所有事情。 –

相关问题