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;
}
}
只是嘗試了......它的工作原理...好後援問題的一部分,新的活動開始啓動下一個活動只有當我點擊屏幕(假設對象已經在屏幕邊緣)。我想要它立即開始新的活動,一旦對象與屏幕結束碰撞,而不必執行點擊操作。問題出在更新()方法,因爲它只是在onTouch方法中調用的。對此的任何可能的修復?還應該在哪裏調用update()? 編輯:一旦主要活動開始後,對象會不斷移動到屏幕的右邊緣 – igorcar1994
即使您未觸摸屏幕,您的物體是否也能達到最終?我看到物體移動,當你觸摸它@ igorcar1994 –
我的道歉,如果我沒有正確解釋。類ZmijicaSV使用SurfaceView,我創建了一個簡單的矩形。它也有簡單的線程,它更新它的x座標。 ,即使我沒有觸摸屏幕,對象也在不停地移動。我正在使用OnTouch方法進行其他操作。 – igorcar1994