我在已编译的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
事件永远不会被解雇的任何想法?
答案 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字节