0

例えば

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

これを 2 回実行する必要があるため、私の猫のアニメーションは 2 回スクラッチします。else に移動する前に、これはおそらくこれを行うには最悪の方法ですが、else if をコピーペーストせずに 2 回実行できるかどうかに興味があります。

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から4またはに遷移します。6

于 2013-02-21T13:29:14.287 に答える