loadStyleDeclarations从不完成

时间:2014-08-23 18:44:49

标签: actionscript-3 flash flex

我在已编译的SWF上调用loadStyleDeclarations,但它永远不会完成,例如,当我添加事件侦听器时,PROGRESS事件被调用但COMPLETE永远不会调用ERROR个事件。我添加了一个百分比检查器来查看发生了什么,它达到了100%并且......只是没有调用COMPLETE事件。

var dispatcher:* = StyleManager.getStyleManager(null).loadStyleDeclarations(asset, true, true, ApplicationDomain.currentDomain);
dispatcher.addEventListener(StyleEvent.PROGRESS, onProgress);
dispatcher.addEventListener(StyleEvent.COMPLETE, onComplete);
dispatcher.addEventListener(StyleEvent.ERROR, onError);

..

private function onProgress(e:StyleEvent):void
{
    //update progress bar here
    trace(Math.floor(100 * e.bytesLoaded/e.bytesTotal) + "% loaded");
}
private function onComplete(e:StyleEvent):void
{
    trace("Style loaded");
}
private function onError(e:StyleEvent):void
{
    trace("Error loading style");
}

输出:( style.swf是我正在尝试加载的那个)

[SWF] C:\Projects\music\bin-debug\Main.swf - 5,656,958 bytes after decompression
0% loaded
83% loaded
100% loaded
[SWF] C:\Projects\music\bin-debug\style.swf - 167,143 bytes after decompression
100% loaded
[SWF] C:\Projects\music\bin-debug\style.swf\[[DYNAMIC]]\1 - 1,223,478 bytes after decompression
[SWF] C:\Projects\music\bin-debug\style.swf\[[DYNAMIC]]\2 - 763,122 bytes after decompression
[SWF] C:\Projects\music\bin-debug\style.swf\[[DYNAMIC]]\3 - 2,083,945 bytes after decompression

关于为什么COMPLETE事件永远不会被解雇的任何想法?

1 个答案:

答案 0 :(得分:2)

原因可能出在CSS swf文件中。我刚刚用非常基本的CSS检查了你的代码(用于设计Flex应用程序)

s|Application {
backgroundColor: red;
}    

您的代码按预期工作。 是不是因为你的CSS更复杂?输出还显示从style.swf加载一些其他动态内容

[SWF] C:\ Projects \ music \ bin-debug \ style.swf [[DYNAMIC]] \ 1 - 解压后1,223,478字节
   [SWF] C:\ Projects \ music \ bin-debug \ style.swf [[DYNAMIC]] \ 2 - 解压缩后的763,122字节
   [SWF] C:\ Projects \ music \ bin-debug \ style.swf [[DYNAMIC]] \ 3 - 解压缩后的2,083,945字节