2015-11-13 100 views
0

我做了一個簡單的遊戲,每當我的對象到達屏幕結尾時,當前活動停止,另一個活動開始。如何在沒有按鈕點擊的情況下從其他活動開始新的活動android

我已經創建了一個簡單的布爾方法collisionDetection()它檢查一個對象是否在屏幕的末尾。但是,我不知道我應該在哪裏使用該方法collisionDetection()

我應該在onResume上檢查碰撞嗎?當發現碰撞時,如何啓動另一個活動並停止主活動?

我對第一個活動

public class ZmijicaCrtanje extends AppCompatActivity implements View.OnTouchListener{ 

ZmijicaSV zmija; 
private static int score=0; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    zmija=new ZmijicaSV(this); 
    zmija.setOnTouchListener(this); 
    setContentView(zmija); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 
    zmija.pause(); 
    } 


@Override 
protected void onResume() { 
    super.onResume(); 
    zmija.resume(); 

} 



@Override 
public boolean onTouch(View v, MotionEvent event) { 

    boolean up=zmija.sp.isUp(); 
    boolean right=zmija.sp.isRight(); 
    boolean down=zmija.sp.isDown(); 
    boolean left=zmija.sp.isLeft(); 


    switch(event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 

      if(up) { 
       zmija.sp.setUp(false); 
       zmija.sp.setRight(true); 
       update(); 
       break; 
      } 

      if(right) { 
       zmija.sp.setRight(false); 
       zmija.sp.setDown(true); 
       update(); 
       break; 
      } 

      if(down) { 
       zmija.sp.setDown(false); 
       zmija.sp.setLeft(true); 
       update(); 
       break; 
      } 
      if(left) { 
       zmija.sp.setLeft(false); 
       zmija.sp.setUp(true); 
       update(); 
      break; 
     } 


    } 
     return true; 
    } 

public void update() 
{ 
    score++; 
} 
public int getScore() 
{ 
    return score; 
} 

} 

公共類ZmijicaSV類繼承SurfaceView實現Runnable {

private boolean Collision; 
Thread t=null; 
Pravougaonik pr; 
SurfaceHolder holder; 
boolean isRunning=false; 
SnakeParts sp; 
ZmijicaCrtanje zc; 
public ZmijicaSV(Context context) { 
    super(context); 
    holder=getHolder(); 
    pr=new Pravougaonik(context); 
    sp=new SnakeParts(); 
    zc=new ZmijicaCrtanje(); 
    Collision=false; 
} 

public void run() 
{ 
    Paint p=new Paint(); 
    p.setColor(Color.BLUE); 
    p.setStyle(Paint.Style.FILL); 
    while(isRunning) 
    { 

     if(!holder.getSurface().isValid()) { 
      continue; 
     } 
     Canvas c=holder.lockCanvas(); 
     c.drawColor(Color.BLACK); 
     sp.Draw(c); 
     pr.onDraw(c); 
     sp.update(); 
     drawText(c); 
     holder.unlockCanvasAndPost(c); 

     try { 

      t.sleep(50); 

     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public void resume() 
{ 
    isRunning=true; 
    t=new Thread(this); 
    t.start(); 
} 

public void pause() 
{ 
    isRunning=false; 
    while(true) 
    { 
     try { 
      t.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     break; 
    } 
    t=null; 

} 

public void drawText(Canvas canvas) 
{ 
    Paint paint=new Paint(); 
    paint.setColor(Color.WHITE); 
    paint.setTextSize(50); 
    paint.setTypeface(Typeface.create(Typeface.DEFAULT,Typeface.BOLD)); 
    canvas.drawText("Score:"+zc.getScore(),getWidth()-230,getHeight()-25,paint); 
} 

public boolean checkCollision() 
{ 
    if((sp.getHeadX()<-1)||(sp.getHeadX()>getWidth())||(sp.getHeadY()>getHeight())||(sp.getHeadY()<-1)) 
     Collision=true; 
    return Collision; 
} 

}

回答

0

collisionDetection()方法在public void update()方法類似

public void update() 
{ 
    score++; 
    collisionDetection(); 
} 

而且在collisionDetection()檢測collition時意圖

Intent next=new Intent(this.class,your_class_for_secondactivity.class); 
startActivity(next); 
+0

只是嘗試了......它的工作原理...好後援問題的一部分,新的活動開始啓動下一個活動只有當我點擊屏幕(假設對象已經在屏幕邊緣)。我想要它立即開始新的活動,一旦對象與屏幕結束碰撞,而不必執行點擊操作。問題出在更新()方法,因爲它只是在onTouch方法中調用的。對此的任何可能的修復?還應該在哪裏調用update()? 編輯:一旦主要活動開始後,對象會不斷移動到屏幕的右邊緣 – igorcar1994

+0

即使您未觸摸屏幕,您的物體是否也能達到最終?我看到物體移動,當你觸摸它@ igorcar1994 –

+0

我的道歉,如果我沒有正確解釋。類ZmijicaSV使用SurfaceView,我創建了一個簡單的矩形。它也有簡單的線程,它更新它的x座標。 ,即使我沒有觸摸屏幕,對象也在不停地移動。我正在使用OnTouch方法進行其他操作。 – igorcar1994

相關問題