actionscript 3 - 判断 Event.COMPLETE 是否已在 Flex 中触发的最佳方法<Image>



我正在寻找判断<mx:Image>是否已经触发了'Event.COMPLETE'事件的最佳方法。如果它已显示,我想做一些事情,或者如果尚未显示,则附加事件处理程序。

像这样:

if (newBackground.percentLoaded < 100) 

if (newBackground.content != null)

我最初在做newBackground.content != null,但这有一些跨域问题,因为沙盒显然不允许我访问内容!

我什至有点厌倦在可能的比赛条件下使用percentLoaded < 100

是的,我熟悉showEffect,但这不是我想要的。

我假设您由于某种原因无法在图像开始加载之前将Event.COMPLETE事件侦听器附加到图像。如果是这种情况,您可以随时对mx.controls.Image进行子类化,并添加您自己的属性"loadingCompleted""complete",这些属性最初是false但在第一次触发Event.COMPLETE事件时设置为true

AS3 中的加载程序永远不会有争用条件,因为 API 的该部分不是多线程的。 只需在加载开始之前添加事件侦听器,您就会没事的。 如果您使用的是MXML,那么这一切都会为您解决。

如果出于某种原因无法控制 Image 控件,则最佳做法是比较 bytesLoaded 和 bytesTotal。

// this will not race  
if (myImage.bytesLoaded < myImage.bytesTotal)  
{  
  myImage.addEventListener(Event.COMPLETE, handleImageComplete);  
}  
else  
{  
  // it's already done, do whatever you need to with it...  
}

您是否尚未订阅完整活动。 还是进度事件? 您使用的是加载器吗? 我相信在flex中,您可以在图像的标记中附加事件处理程序,至少可以完成和进度。 进度将为您提供总字节数和已加载字节数。

干杯 安德鲁

使用事件是最好的方法。如果遇到事件不起作用的方案,则可以监视图像控件的 contentWidth 和 contentHeight 属性。根据文档,"您可以在触发更新完成事件后获取值。在加载之前,该值为 NaN。加载内容后,它就会变成一个数字。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Image.html

相关内容

最新更新