0

例如

else if (currentImage == nekoPics[4]) 
currentImage = nekoPics[5];

需要这个运行两次,所以我的猫动画在移动到 else 之前会划伤两次,这可能是最糟糕的方法,但我很感兴趣如果你可以在没有复制粘贴的情况下执行两次 else

else if (currentImage == nekoPics[5]) 
currentImage = nekoPics[4];

并且更改索引会导致循环,他会一直抓挠。

任何帮助表示赞赏

编辑:整个代码

private void scratch(){
    for (int i = xPos; i <getWidth()/2; i+=0){
            xPos = getWidth()/2;
            // swap images

            if (currentImage == nekoPics[0]) 
                currentImage = nekoPics[1];
            else if (currentImage == nekoPics[1]) 
                    currentImage = nekoPics[2];
            else if (currentImage == nekoPics[2]) 
                    currentImage = nekoPics[4];
            else if (currentImage == nekoPics[4]) 
                currentImage = nekoPics[5];
            else 
                i+=10;

            repaint();
            pause(150)
4

2 回答 2

2

整个 if-else 逻辑是多余的。按照应该显示的顺序将图像放入有序集合(数组,列表)中,如下所示

 Pictures[] seq = new Pictures[] { pic1, pic2, pic3, pic3, pi2, pic4, pic5 };

然后浏览集合,或维护一个指向下一张图片的索引。

于 2013-02-21T13:28:56.617 回答
0

我收集您正在浏览一系列图像,因此您可以执行以下操作:

else if (currentImage == nekoPics[3]) {
    currentImage = nekoPics[4];
    countdown = 5;
} else if (currentImage == nekoPics[4]) {
    currentImage = nekoPics[5];
} else if (currentImage == nekoPics[5]) {
    if (countdown-- > 0)
        currentImage = nekoPics[4];
    else
        currentImage = nekoPics[6];
} else if ...

换句话说,当从 3 过渡到 4 时,根据您想要重复4,5序列的频率设置倒计时变量。

然后从倒计时过渡5到其中之一46基于倒计时。

于 2013-02-21T13:29:14.287 回答