об используемом значении в Progress Bar - PullRequest
0 голосов
/ 25 февраля 2012

Я занимаюсь разработкой игры на андроид. Я хочу использовать значение Progress Bar, чтобы заставить стрелять силой. И это мой код:

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++;, почему myProgress в progressValue() не меняется? Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Попробуйте:

 @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 голосов
/ 25 февраля 2012

новая тема (myThread) .start (); Должен быть в OnTouch перед заявлением о возврате;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...