【发布时间】:2015-04-18 04:35:42
【问题描述】:
我正在制作一个游戏,其中有青蛙在屏幕上跳来跳去。一旦触摸到一只青蛙,我将游戏图像更改为我设置的“deadFrog”并且它的运动停止。我在数组列表下创建了它们,我不确定如何只对单个青蛙进行更改。现在,如果点击一只青蛙,所有的青蛙都会停止移动并变成死蛙。希望您能帮我解决一下战术核弹问题;)*如果您需要更多信息,请发表评论,我一定会提供!
编辑没有办法访问块数组列表中的单个元素吗?例如,我尝试过 blocks(1),但这是无效的。
这里是青蛙被宣布的地方:
public void init() {
blocks = new ArrayList<Block>();
for (int i = 0; i < 5; i++) {
Block b = new Block(i * 200, MainActivity.GAME_HEIGHT - 95,
BLOCK_WIDTH, BLOCK_HEIGHT);
blocks.add(b);
tapped = false;
}
}
它们是这样渲染的:
private void renderFrogs(Painter g) {
if (!tapped) {
for (int i = 0; i < blocks.size(); i++) {
Block b = blocks.get(i);
if (b.isVisible()) {
Assets.runAnim.render(g, (int) b.getX(), (int) b.getY());
}
}
}
if (tapped) {
for (int i = 0; i < blocks.size(); i++) {
Block b = blocks.get(i);
if (b.isVisible()) {
g.drawImage(Assets.deadfrog, (int) b.getX(), (int) b.getY());
}
}
}
}
这是 onTouchListener:
public boolean onTouch(MotionEvent e, int scaledX, int scaledY) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
recentTouchY = scaledY;
} else if (e.getAction() == MotionEvent.ACTION_UP) {
for (int i = 0; i < blocks.size(); i++) {
Block b = blocks.get(i);
if ((scaledY >= b.getY() - BLOCK_HEIGHT || scaledY <= b.getY()) && (scaledX >= b.getX() || scaledX <= b.getX() + BLOCK_WIDTH)) {
tapped = true;
}
}
}
return true;
}
【问题讨论】:
标签: android object arraylist android-studio graphic