フラッシュアプリケーションのデフォルトのタイムアウト期間を延長するにはどうすればよいですか?
質問
フラッシュで書かれたアプリケーションがあります(実際にはHaxeで書かれており、SHWXで実行されますが、ここでは関係ありません)。大量の CPU パワーを消費し、場合によっては 15 秒以上実行されるかなり複雑なタスクがあります。それが発生した場合、「スクリプトがデフォルトのタイムアウト期間が15秒よりも長く実行されている」というエラーがあります。そして、すべてがクラッシュします。
これを防ぐために継続を使用できることはわかっていますが、「デフォルトのタイムアウト期間」を延長する方法はありますか?これは開発者ツールなので、応答性はあまり重要ではありません。
解決
別の方法は、 スイフミル-swf-lib スイッチを介して -based swf を実行し、そこにこの ScriptLimits タグを設定すると、haxe はそれを再利用します。
他のヒント
CS3+ では、パブリッシュ時に swf の「スクリプト時間制限」プロパティを設定するだけです。これはパブリッシュ設定のフラッシュ タブにあります。
アプリケーションをテストするときは、scripttimelimitプロパティに注意してください。アプリケーションの初期化に時間がかかりすぎると、Flashプレーヤーは、スクリプトがフラッシュプレーヤーにゆっくりと実行されていることをユーザーに警告し、ユーザーにアプリケーションを中止するように促します。これが状況である場合、TAGのScriptTimElimitプロパティを長い時間に設定して、Flexアプリケーションが初期化するのに十分な時間を確保できます。
しかし scripttimelimitプロパティのデフォルト値は60秒で、これも最大です, 、したがって、以前にそれをより低い値に設定したことがある場合にのみ、値を増やすことができます。この値を変更する必要はほとんどありません。
ソース: http://livedocs.adobe.com/flex/3/html/help.html?content=performance_05.html
これを実現するためのもっとネイティブなものがあるかどうかはわかりませんが、あるようです SWF をハッキングして ScriptLimits タグを追加するコマンド タイムアウト期間を延長します。
関数をより小さなチャンクに分割し、複数のフレームに分散することをお勧めします。こうすることで進行状況のアニメーションを表示でき、Flash アプリケーションが応答しなくなることはありません。たとえば、1000 個を超えるアイテムをループする必要がある場合、すべてのアイテムを処理し終わるまで、1 つのフレームで 100 個のアイテムを実行し、次のフレームでさらに 100 個のアイテムをループするというように繰り返します。swf をハッキングすることはお勧めしません。