我真的需要一些帮助,因为我不知道如何解决它!:/
这里有问题。
我的应用程序在我的计算机上运行良好,无论是离线还是在线(闪存上传到我们的网络服务器)。它在 IE 和 Firefox 中都可以正常工作。
但是,有些用户在 IE 中运行它确实有问题,而 Firefox 仍然可以。
该应用程序本身可以工作,尝试将一些帧缓冲到 BitmapData 时出现错误。
因此,在 Firefox 中,它运行良好。在 IE 中(在我的电脑上)效果很好。在 IE(在其他计算机上)中它不起作用,并且这个错误被强制转换。它发生在最后,这意味着在最后一次运行函数之前一切正常。(它像这样运行以允许更新进度条。如果我将 for 循环设置为 180,那么它会全部冻结,直到完成。这就是我执行 10 和 10 的原因。)
任何关于这方面的帮助都会很棒,因为我完全被困在这里......我已经跟踪了位图数据的大小,并且在出现错误时它是 1920x1080,这就是它应该是的。
这是失败的代码:
fpsoSWFBuffer = new BitmapData(fpsoMC.width, fpsoMC.height, false, 0x00ff0000);
这是代码所在的整个函数:
public function bufferFpsoImages(evt:TimerEvent):void{
for (var i:int = 0; i<10; i++){
fpsoMC.gotoAndStop(currentFpsoFrame);
fpsoSWFBuffer = new BitmapData(fpsoMC.width, fpsoMC.height, false, 0x00ff0000);
fpsoSWFBuffer.draw(fpsoMC);
fpsoImgArray[currentFpsoFrame] = fpsoSWFBuffer;
currentFpsoFrame++;
}
if (currentFpsoFrame <= (totImg360-10)){
// Still buffering frames //
myLoadingPanel.setBufferProg(currentFpsoFrame);
var fpsoTimer:Timer = new Timer(1,1);
fpsoTimer.addEventListener(TimerEvent.TIMER_COMPLETE, bufferFpsoImages);
fpsoTimer.start();
}else{
// All frames buffered //
currentFpsoFrame = 0;
fpsoLoaded = true;
fpsoLoading = false;
ncFPSO.removeElement(myLoadingPanel);
myLoadingPanel = null;
var fpsoBitmap:Bitmap = new Bitmap(fpsoImgArray[0]);
fpsoBitmap.smoothing = true;
fpsoImage.source = fpsoBitmap;
}
}
编辑:我现在添加了一些调试功能,以便能够知道它失败的地方。(因为它在调试期间工作,我需要在线调试实时版本)。
这就是我得到的:
ErrorID=2015
ErrorMessage=Error #2015
ErrorPos=fpsoSWFBuffer = new BitmapData(1920, 1080, false, 0x00ff0000);
CurrentFpsoFrame=168
Position in For Loop=8
EDIT2:这是我最终在 Flash Builder 中得到的错误消息。所以现在它也在这里崩溃了.. =/
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/ctor()
at flash.display::BitmapData()
at Main/bufferTemplateImages()[E:\Workspace - Flash Builder\vCog Workspace\vCog Communicator 3.0\src\Main.mxml:461]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.utils::Timer/tick()