IE 不支持 as3 预加载器操作
Posted
技术标签:
【中文标题】IE 不支持 as3 预加载器操作【英文标题】:IE not supporting as3 preloader action 【发布时间】:2011-10-04 05:45:22 【问题描述】:我使用了下面的代码。
停止(); this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadingAction); this.loaderInfo.addEventListener(Event.COMPLETE, onLoadedAction); this.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErroAction); 函数 onLoadingAction (e:ProgressEvent):void 跟踪(“加载”); 函数 onLoadedAction (e:Event):void this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoadingAction); gotoAndStop(currentFrame+1); 函数 ioErroAction (e:IOError):void trace("开发本" + e.toString());此代码支持 chrome 和 firefox。但如果我使用 IE 运行,它会卡在 onLoadingAction。
我需要做什么才能在 IE 中运行?
【问题讨论】:
只是出于好奇,你能输出onLoadingAction
的踪迹吗?
@goliatone:完整阅读我的问题。
我确实读过它。我只是不明白您所说的卡在 onLoadingAction 是什么意思。我在 IE 中遇到了类似的问题。
卡住的意思是......它没有移动到 COMPLETE 事件处理程序,而是使用 progressEvent 事件处理程序。
检查 Mike Welsh 的答案...效果很好。
【参考方案1】:
不幸的是,根 loaderInfo 的 COMPLETE 事件并不可靠,并且在不同的浏览器中表现不同。如果文件被缓存或在本地运行,它将无法在某些浏览器中触发。
相反,在 ENTER_FRAME 或 TIMER 处理程序中检查 loaderInfo.bytesLoaded == loaderInfo.bytesTotal:
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void
if(loaderInfo && loaderInfo.bytesLoaded == loaderInfo.bytesTotal)
// load complete
【讨论】:
不能使用 Progress 事件进行检查吗? 不幸的是,我相信 ProgressEvent 在某些环境中可能会出现无法触发的相同问题。刚才在 IE9 中测试本地 SWF 时,PROGRESS 事件没有触发,即使 COMPLETE 事件触发了。所以,一般来说,我不会信任根 loaderInfo 上的事件,而只会检查 ENTER_FRAME 中的完成情况。 刚刚在 IE10 上使用 Flash 11.8 时遇到了这个问题。在本地硬盘驱动器上打开文件时不会触发进度事件(c:/index.html 加载 c:/movie.swf)。切换到 onEnterFrame 并检查 bytesLoaded 工作正常。谢谢!以上是关于IE 不支持 as3 预加载器操作的主要内容,如果未能解决你的问题,请参考以下文章