マルチスレッドしたい!再生/一時停止/停止ボタンを備えたタイマーを作成したいのですが、ユーザーが再生ボタンを押すと、タイマーがカウントを開始します。カウントプロセスを実行したいのですが、これは別の操作で行う必要があります。このタイマーを使用して、ユーザーが進行中の sth を測定したいので、とにかくシーンの他の場所で sth を実行したいので、ユーザーはそれにかかる時間を測定します!!! 私はフラッシュの初心者ですが、私が知る限り、解決策はマルチスレッドです! または、プログラムをハングさせることなく、時間を測定できるようなタイマーまたは sth があります。私は as2 で作業していますが、 as3 しか方法がない場合でも問題ありません。tnx
1 に答える
Flash Player 11.4 は、新しい同時実行 (actionscript ワーカー) 機能により、ある種のマルチスレッドを提供します。ここでそれについて読んでください: http://blogs.adobe.com/flashplayer/2012/08/flash-player-11-4-and-air-3-4.html
Flash 11.3 以下はマルチスレッドを提供しません。ただし、あなたの質問には特にマルチスレッドは必要ありません。flash.utils.Timer クラスと flash.utils.setTimeout() は非同期であり、コード スタックをハングさせません。
Adobe ドキュメントでこれらのクラスを確認することをお勧めします。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils /package.html#setTimeout()
コメントで質問に対処するには:
var timer:Timer = new Timer(1000); //fire every second, make this number smaller to have it update faster
timer.addEventListener(TimerEvent.TIMER, updateLabel);
var timeStamp:int;
function startTimer():void {
timeStamp = getTimer();
timer.reset();
timer.start();
}
function updateLabel(e:Event):void {
var timePassedSoFar:int = getTimer() - timeStamp;
//update your label to show how much time has passed (it's in milliseconds)
}
秒だけが必要な場合は、(getTimer() の代わりに) timer.currentCount プロパティを使用することもできます。これは、タイマーが何回起動したかを示します。上記の例では、1 回に 1 回起動したときに経過した秒数です。 2番目。