我正在做一個遊戲,並在有人點擊後,球移動屏幕上,這需要一些時間。我試圖在球停止移動後做一個方法。我嘗試了睡眠,並沒有奏效。我也看着asynctask,並沒有完全理解它。有人能指引我正確的方向或告訴我如何使用asynctask與我的代碼,謝謝。我真的很陌生,所以任何事情都會有幫助。我需要幫助開始一種方法後,另一種方法完成後,而不是在它
第一部分是主類,其中包含遊戲中的動作代碼。 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方法。任何幫助將是有用的,謝謝!
你能發現球何時停止嗎? –
我有一個最大高度取決於你點擊球的位置,然後onDraw方法會通過並且每次向上移動一組數字,直到達到最大高度。總之,是的。 – theCJCsoccer