gpt4 book ai didi

java - 如何为多个 ImageView 创建一个更新函数?

转载 作者:行者123 更新时间:2023-11-29 23:52:35 26 4
gpt4 key购买 nike

我正在尝试为多个 ImageView 创建一个更新函数,但一直遇到问题。我目前正在将一个单独的 ImageView 传递给计时器内的 updateBlobPosition 函数,这对一个 ImageView 来说效果很好。但是一旦我通过第二个 ImageView (blob2),现在两个 ImageView 会相互模仿,因为它们具有相同的轨迹和速度。

此外,当一个 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;
}

最佳答案

您对两者使用相同的速度变量。因此,它们当然会以相同的方式更新。如果您希望它们独立移动,请给它们独立的速度。

关于java - 如何为多个 ImageView 创建一个更新函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728920/

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