1

マルチスレッドしたい!再生/一時停止/停止ボタンを備えたタイマーを作成したいのですが、ユーザーが再生ボタンを押すと、タイマーがカウントを開始します。カウントプロセスを実行したいのですが、これは別の操作で行う必要があります。このタイマーを使用して、ユーザーが進行中の sth を測定したいので、とにかくシーンの他の場所で sth を実行したいので、ユーザーはそれにかかる時間を測定します!!! 私はフラッシュの初心者ですが、私が知る限り、解決策はマルチスレッドです! または、プログラムをハングさせることなく、時間を測定できるようなタイマーまたは sth があります。私は as2 で作業していますが、 as3 しか方法がない場合でも問題ありません。tnx

4

1 に答える 1

2

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番目。

于 2012-08-03T17:09:56.093 に答える