私はゲームを作成しています。誰かがクリックした後、ボールが画面上を移動しますが、これには時間がかかります。ボールが動かなくなった後にメソッドを実行しようとしています。私は睡眠を試みましたが、うまくいきませんでした。asynctask も調べましたが、完全には理解していません。誰かが私を正しい方向に向けたり、私のコードで asynctask を使用する方法を教えてくれたりできますか? 私はこれに本当に慣れていないので、何でも役に立ちます。
この最初の部分は、ゲーム内のアクションのコードを持つ Main クラスです。afterKick() メソッドは、kick() メソッドが終了した後に発生させたいアクションです。
final FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
main.setBackground(this.getResources().getDrawable(R.drawable.field));
newBall = new Ball(this);
main.addView(newBall);
main.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
System.out.println("x:" + x + " y" + y);
if(kick == false && attempt<10)
{
setHeight(y, newBall);
kick(x,y,newBall,main);
}
afterKick();
// TODO Auto-generated method stub
return false;
}
});
kick() メソッドが呼び出されると、ボールを作成するクラスに移動します。onDraw メソッドは、無効化のためにボールが再描画されなくなるまで繰り返し続けます。
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawBitmap(scaled, left, top, null);
if(topMax>=top)
{
setDone(true);
}
else if(straight == true && top> topMax)
{
kickStraight();
}
else if(righty == true && top>topMax)
{
kickRight();
}
else if(midRight == true && top>topMax)
{
kickMidRight();
}
else if(midLeft == true && top>topMax)
{
kickMidLeft();
}
else if(lefty == true && top>topMax)
{
kickLeft();
}
invalidate();
}
無効化が onDraw メソッドを再起動しなくなった後、何かを行う方法がわかりません。どんな助けでも役に立ちます、ありがとう!