gpt4 book ai didi

java - Q :Android - How to increase score every time I click on screen

转载 作者:行者123 更新时间:2023-11-30 01:46:11 26 4
gpt4 key购买 nike

出于某种原因,每当我在第一类(在 OnTouch 方法中)增加“分数”时,当我调用 drawText 方法时,它不会在我的第二类中更新。然而,当我触摸屏幕时,分数会增加,但调用第二类中的 zc.getScore() 方法仍然显示 100。

ZmijicaSV zmija;
private int score=100;
@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;
}

.

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();
}

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.YELLOW);
paint.setTextSize(200);
canvas.drawText("Score:"+zc.getScore(),100,getHeight()-200,paint);

}

最佳答案

我不能确定,因为你没有包括第一类的名称,但我很确定问题是你正在创建第一类的新实例(可能是 ZmijicaCrtanje())二等。 ZmijicaCrtanje 的第一个实例中注册的点击不会改变此 ZmijicaCrtanje 实例。

修复此错误的两种可能方法是:

  1. 将分数设为静态变量。
  2. 将 ZmijicaCrtanje 的实例传递给第二个类 ZmijicaSV 的构造函数,并将其设置为等于全局变量 zc。

祝你好运!

关于java - Q :Android - How to increase score every time I click on screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com