1

我有以下 MXML 标签:

<mx:Image id="image" width="100%" height="100%" 
              source="@Embed('../assets/Test.swf')" 
              complete="completeHandler(event)" 
              progress="progressHandler(event)"/>

但由于某种原因,我的 completeHandler / progressHandler 函数没有被调用。我需要完整事件的原因是因为我想在图像加载后操作位图数据。在 creationComplete 中,位图数据仍然为空。为什么这些事件没有触发?

编辑:资产在我的应用程序中正确显示 - 所以我知道资产在正确的位置(嵌入保证无论如何在编译时)。

4

4 回答 4

0

检查您的资产路径。最有可能的是,swf 不在正确的路径上,或者没有被复制到assetsdebug-build/release-build 目录中的文件夹中。

于 2009-03-24T07:14:17.827 回答
0

如果您使用的是嵌入式资产,则宽度/高度属性可立即在源对象上使用:

var mySource:Object = new embeddedClass();
m_myWidth = mySource.width;
m_myHeight = mySource.height;
m_image = new Image();
m_image.source = mySource;

因此,您必须先创建源实例,然后在图像对象上设置源。

于 2009-03-25T20:53:15.273 回答
0

因此,您只需将 Event.COMPLETE 侦听器直接添加到 loader.contentLoaderInfo 而不是加载器。我不敢相信这不是他的文档。

于 2009-08-20T22:59:58.290 回答
0

这似乎是这里的预期行为!

从文档中:

不保证会调度进度事件。可能会接收到完整的事件,而不会分派任何进度事件。当加载的内容是本地文件时,可能会发生这种情况。

所以我认为这部分可以解释为什么在您的示例中没有捕获任何进度事件。

内容加载完成时调度。与 complete 事件不同,此事件针对所有源类型调度。请注意,对于通过 Loader 加载的内容,会调度 ready 和 complete 事件。对于嵌入等其他源类型,仅调度就绪。

它清楚地表明在处理嵌入式源时应该监听 READY 事件而不是 COMPLETE ;)

于 2014-06-16T05:26:04.377 回答