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