我试图为多个ImageView创建一个更新函数,但总是遇到问题。我目前在一个定时器中向updateBlobPosition
函数传递了一个单独的ImageView,这对于一个ImageView来说很好。但只要我传递第二个ImageView (blob2),现在这两个ImageViews就会相互模仿,因为它们具有相同的轨迹和速度。
此外,当一个ImageView撞到墙上并反弹回来时,另一个也会做同样的事情。我想要的是每个ImageView彼此独立。任何帮助都将不胜感激。
...
blob1.setX(generateRandomNumber(0, 930));
blob1.setY(generateRandomNumber(0, 1750));
blob2.setX(generateRandomNumber(0, 930));
blob2.setY(generateRandomNumber(0, 1750));
...
//start the timer
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
playerMovement();
updateBlobPosition(blob1);
updateBlobPosition(blob2);
collision(blob1);
collision(blob2);
}
});
}
}, 0, 20);
...
protected ImageView updateBlobPosition(ImageView blob) {
blobX = blob.getX();
blobY = blob.getY();
blobX += blobVelocityX;
blobY += blobVelocityY;
//left
if ((blob.getX() + blobVelocityX < 0)) {
blobVelocityX = -blobVelocityX;
}
//right
else if (blob.getX() - blobVelocityX > 930) {
blobVelocityX = -Math.abs(blobVelocityX);
}
//top
if ((blob.getY() + blobVelocityY < -20)) {
blobVelocityY = -blobVelocityY;
}
//bottom
else if (blob.getY() - blobVelocityY > 1750) {
blobVelocityY = -Math.abs(blobVelocityY);
}
blob.setX(blobX);
blob.setY(blobY);
return blob;
}
发布于 2018-06-07 04:26:10
这两个变量都使用了相同的速度变量。因此,它们当然会以相同的方式更新。如果你想让他们独立移动,就给他们独立的速度。
https://stackoverflow.com/questions/50728920
复制相似问题