2011-08-05 2 views
0

SWFファイルで、次のコードを使用して前のフレームに戻ったとき、それは非常に遅いです。約2秒かかります。次のフレームに進むには30-40ミリ秒かかる。ここで SWFムービーの前のフレームに移動すると、パフォーマンスが非常に低下する

movieClip.gotoAndStop(movieClip.totalFrames);//go the last frame of movie 

while(movieClip.currentFrame>1) { 
    var initTime:int = getTimer(); 
    movieClip.prevFrame(); 
    trace("Frame: "+movieClip.currentFrame+" Time taken:"+(getTimer()-initTime)/1000)   
} 

はSWFToolsを使用してPDFからSWFムービーが生成される(秒単位のタイミングを)私は取得しています出力

Frame: 84 Time taken:2.586 
Frame: 83 Time taken:2.766 
Frame: 82 Time taken:2.257 
Frame: 81 Time taken:2.447 

です。ファイルの

サイズ:フレームの5.8メガバイト 番号:前のフレームに行くのパフォーマンスを向上させるために、異なる何をすべきか上の85の

任意のアイデア?

+0

は確か?フレーム1からフレーム2に向かって前進し、画面上に黒い四角だけが表示されている場合は、フレーム84からフレーム83に移動するよりもパフォーマンスが向上します。複雑なオブジェクトと透明... – weltraumpirat

答えて

0

とにかくwhile()ループを使ってトラフフレームをジャンプさせるのは良い考えではありません。プレイヤーは1フレームの時間に命令を実行しようとしますが、各MovieClipフレームは長い時間人間の目によってあなたの代わりにこれを試してみました:代わりに、ループのタイマーを使う

movieClip.gotoAndStop(movieClip.totalFrames);//go the last frame of movie 

var timer : Timer = new Timer (100,999); 
timer.addEventListener (TimerEvent.TIMER, , function() : void { 
    var initTime:int = getTimer(); 
    movieClip.prevFrame(); 
    trace("Frame: "+movieClip.currentFrame+" Time taken:"+(getTimer()-initTime)/1000)   
}); 
timer.start(); 

は、実際のフレーム間での切り替えが正常に表示される各フレームのために十分な長さを取ることを保証する - と合理的なパフォーマンスの境界内に滞在する機能のために。

1

私は、AdobeのJiraに、今日、この問題を報告しました:あなたは同じフレームに移動し比較している

http://bugs.adobe.com/jira/browse/ASL-313

+0

ありがとう!報告のため。 –

関連する問題