对此感到有些困惑,所以我以为我会发布。很抱歉,如果我的标题不清楚,这对Java来说还很陌生,并且不确定如何解释。无论如何,这是到目前为止我的代码集(我猜是问题位)
int currentImageIndex = 0; // Assuming [0] is your first image.
int[] nextImageList = { 2, 4, 5, 4, 5, 4, 5, 0, 1 };
public void nekoRun() {
moveIn();
scratch();
moveOut();
private void moveIn() {
for (int i = 0; i < getWidth()/2; i+=10) {
xPos = i;
// swap images
if (currentImage == nekoPics[0])
currentImage = nekoPics[1];
else
currentImage = nekoPics[0];
repaint();
pause(150);
private void scratch() {
for (int i = xPos; i < getWidth();) {
xPos = i;
// Swap images.
currentImageIndex = nextImageList[currentImageIndex];
currentImage = nekoPics[currentImageIndex];
repaint();
pause(150);
}
}
private void moveOut() {
for (int i = xPos; i < getWidth(); i+=10) {
xPos = i;
// swap images
if (currentImage == nekoPics[0])
currentImage = nekoPics[1];
else
currentImage = nekoPics[0];
repaint();
pause(150);
}
}
因此,基本上发生了什么(这不是所有的代码,而仅仅是“多汁的部分”,一只猫将横穿屏幕,然后坐下来,它应该刮擦两次,由于使用了整整只猫,我得到了一些帮助。堆其他if语句,我知道那是多余的。由于明显的原因,猫会跑到中心,会抓挠并不断抓挠,由于明显的原因,我只是对如何移动它感到困惑很抱歉,如果还不清楚,我对此很陌生,请耐心等待。
提前致谢
最佳答案
您的问题称为无限循环...而不是
private void scratch() {
for (int i = xPos; i < getWidth();) {
这应该读
private void scratch() {
for (int i = 0; i < 2*<how many frames the scratching takes>; i++) {
// **UPDATE** the xPos=i; shouldn't be here!!!
说明:
似乎您已经从moveIn()函数复制了循环定义,在这种情况下,这似乎是合法的。发生某些事情,将其统一到屏幕中间。但是在
scratch()
功能中,子画面不会移动,也永远不会到达屏幕的末端。因此,ozu必须重复两次绘制步骤,以使划痕跨度达到多少帧。您必须将该数字放入<how many frames the scratching takes>
占位符,它应该可以工作。编辑
xPos=i
;不应出现在scratch()
中...