ActionScriptでマルチスレッドまたは「グリーンスレッド」を実装する方法について、コードまたはクラスライブラリがあるかどうか疑問に思いました。
ご覧のとおり、Scott Petersonはある種のツールセットを開発していますが、Adobe MAXシカゴイベントでのパフォーマンス以外に、これに関する情報は見つかりませんでした。
よろしくニクラス
ActionScriptでマルチスレッドまたは「グリーンスレッド」を実装する方法について、コードまたはクラスライブラリがあるかどうか疑問に思いました。
ご覧のとおり、Scott Petersonはある種のツールセットを開発していますが、Adobe MAXシカゴイベントでのパフォーマンス以外に、これに関する情報は見つかりませんでした。
よろしくニクラス
Drew Cummins による Green Threading lib は次のとおりです。
ActionScriptでグリーンスレッドを実行する組み込みの方法はありません。あなたはそれを処理するためのコードを書かなければなりません。
実行したい操作を1回繰り返す関数を作成します。仕事が終わったかどうかに応じて、trueまたはfalseを返す必要があります。ここで、ENTER_FRAMEイベントの次の画面更新までの残りの時間間隔を計算する必要があります。これは、flash.utils.getTimerを使用して実行できます。
start = getTimer();
//thread is a ui component added to system manager that is redrawn each frame
var fr:Number = Math.floor(1000 / thread.systemManager.stage.frameRate);
due = start + fr;
毎回関数の戻り値をチェックし、getTimer()をdueと比較して期限を過ぎたかどうかを確認しながら、関数を実行し続けます。
これは、ブログエントリのAlexHaruiによって使用可能なクラスに実装されています-ActionScriptのスレッド
古い記事ですが、複数のswfsを立ち上げてLocalConnectionでデータを共有するquasimondoさんの手法も興味深いかもしれません。彼らは、LocalConnection を使用する前後に数サイクルを消費する可能性があると言っていましたが、処理される反復が十分に複雑であれば、それほど問題にはならないはずです。
私はプログラマーではなくグラフィックスの人なので、これがあなたに役立つかどうかはわかりません。しかし!
私はすべてのGUIをマルチフレームの「ムービー」にし、各GUIスレッドを異なるフレームに書き込みます。スレッドが1〜3しかないことを確認し、FPSを30または60に設定します。
これは、バグに強く、実装が自動的に行われるため、小さなプロジェクトに役立ちます。