2012-02-25 10 views
0

私はアンドロイドでゲームを開発しています。私は力を行うためにプログレスバーの値の進捗に使用したい矢を撃っ.ANDこれは私のコードです:プログレスバーの使用価値について

public class TheArrows extends Activity { 
    ProgressBar myProgressBar; 
    private int myProgress=0; 
    private int t=0; 

    @Override public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 
     myProgressBar=(ProgressBar)findViewById(R.id.progressbar_Horizontal); 
     app.quabongchuyendong.QuaBongView quaBongView=(app.quabongchuyendong.QuaBongView) findViewById(R.id.qua_bong); 
     quaBongView.setOnTouchListener(new OnTouchListener() { 
      @Override public boolean onTouch(View view, MotionEvent event) { 
       if(event.getAction()==MotionEvent.ACTION_DOWN){ t=1; } 
       if(event.getAction()==MotionEvent.ACTION_MOVE){ t=1; } 
       if(event.getAction()==MotionEvent.ACTION_UP){ t=0; } 
       return false; 
      } 
     }); 
     new Thread(myThread).start(); 
    } 

    private Runnable myThread = new Runnable(){ 
     @Override public void run() { 
      // TODO Auto-generated method stub 
      while (myProgress<100){ 
       try{ 
        myHandle.sendMessage(myHandle.obtainMessage()); 
        Thread.sleep(100); 
       } catch(Throwable t){ } 
      } 
     } 

     Handler myHandle = new Handler(){ 
      @Override public void handleMessage(Message msg) { 
       if(t==1) myProgress++; 
       myProgressBar.setProgress(myProgress); 
      } 
     }; 
    }; 

    public int progressValue(){ 
     return myProgress; 
    } 
} 

私はmyProgress++;を持っていますが、なぜprogressValue()myProgressは変更されませんか?私を助けてください。

+0

期待している場合には 't == 1'を得ますか? –

+0

私はt == 1を使用しています。矢印のaction_downとaction_moveの力が増えると、action_upになってもそれは起こりません。あなたのアイデアは何ですか? –

+0

ダウンとアップのイベントは、このようなシーケンスで起こっているかもしれません。 't'は常にゼロです(アップは' t'をゼロに設定しています)。私は目標はあまり明確ではありませんが、カウンターを移動したり動かすたびに増やしたいのであれば、 'onTouch'関数で' myProgress'変数を増やしてみてはどうでしょうか? –

答えて

0

新しいスレッド(myThread).start(); OnTouch befaore return文にする必要があります。

+0

あなたの心は:public boolean onTouch(ビュー表示、MotionEventイベント){ \t \t \t \t新しいスレッド(myThread).start(); \t \t \t \t(event.getAction()== MotionEvent.ACTION_DOWN){ \t \t \t \t \t T = 1の場合。 \t \t \t \t} \t \t \t \t(event.getAction()== MotionEvent.ACTION_MOVE){ \t \t \t \t \t T = 1の場合。 \t \t \t \t} \t \t \t \t(event.getAction()== MotionEvent.ACTION_UP){ \t \t \t \t \t T = 0の場合。 \t \t \t \t}偽 \t \t \t \tリターン。 –

+0

まだ変更されていません。わかりません –

0

これを試してください。

@Override public boolean onTouch(View view, MotionEvent event) { 
       if(event.getAction()==MotionEvent.ACTION_DOWN){ t=1; } 
       else if(event.getAction()==MotionEvent.ACTION_MOVE){ t=1; } 
       else if(event.getAction()==MotionEvent.ACTION_UP){ t=0; } 
    new Thread(myThread).start(); 
       return false; 
      } 
     }); 

をハンドラハンドラであれば(T == 1)の条件を削除

myHandle = new Handler(){ 
    @Override public void handleMessage(Message msg) { 
     myProgress++; 
     myProgressBar.setProgress(myProgress); 
    } 
}; 

}。

+0

矢印のaction_downとaction_moveの力が増えると、t == 1を使用しますので、action_upのときは勝てません。この時点で値のプログレスバーをキャッチできます矢印の力 –

関連する問題