1

これを修正する方法がわからないので、これについて本当に助けが必要です!:/

ここで問題が発生しました。

私のアプリケーションは、オフラインとオンラインの両方で私のコンピューターで正常に動作しています (当社の Web サーバーにアップロードされたフラッシュ)。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()
4

2 に答える 2

1

1.5 GB のメモリをバッファリングしていますか? フラッシュは、OS がメモリを提供できなくなるまで、OS にメモリを要求し続けます。あなたのコンピューターでは機能するが、他のコンピューターでは機能しない場合は、そのコンピューターがメモリを要求する他の多くのプログラムを実行しており、プロジェクトに十分なメモリを供給できない可能性があります。私が確認するもう1つのことは、32ビットウィンドウを使用しているOSのバージョンが最大2Gbのメモリしか認識できないことです。これは単なる理論ですが。メモリ使用量を制限するために、最初に画像を圧縮してみてください。

于 2013-05-08T12:36:36.317 に答える