2016-05-17 2 views
0

私はLibGDXを使用しています。私はわずか数秒の遅れの後に5回タスクを実行したい。私には2つの選択肢があります。


アプローチ1タイマを使用してタスクを5回実行する最良の方法は何ですか?

Timer.schedule(new Task() { 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    , 10 
    , 5 
    ); 



アプローチ2

Timer.schedule(new Task() { // 1st time 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    ); 
Timer.schedule(new Task() { // 2nd time 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    ); 
Timer.schedule(new Task() { // 3rd time 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    ); 
Timer.schedule(new Task() { // 4th time 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    ); 
Timer.schedule(new Task() { // 5th time 
     @Override 
     public void run() { 
      mytask(); 
     } 
    } 
    , 10 
    ); 




私はアプローチ1は、より効率的であると思いますが、何らかの理由でそれが後に停止しません。 5回目、それを続ける代わりに。助けて。

+0

最初のアプローチでエラーが発生する可能性はありますか? maxを指定したスケジュールメソッドのみがあります。 3つのパラメータ – ZeusNet

+0

公式サイトでは、scheduleメソッドで最大4つのパラメータが可能です。https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Timer.html#schedule-com.badlogic.gdx .utils.Timer.Task-float-float-int- –

+0

java.util.Timerの標準実装を見ています。 – ZeusNet

答えて

1

問題は、タイマーのLibGDX実装が、タスクをスケジュールし、最後のパラメータで表されているようにx回繰り返すという問題でした。この方法のコメントには、「指定された遅延の後にタスクが1回発生するようにスケジューリングし、その後指定された間隔で追加の回数を実行するようにスケジュールします。 したがって、最初のアプローチではタスクが6回実行され、期待通りに実行されません。5回

関連する問題