В любом случае, чтобы сделать еще, если запустить определенное количество раз?

e.g

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

Нужно, чтобы это запускалось дважды, поэтому моя анимация кота дважды царапается, прежде чем перейти к другому, это, вероятно, худший способ сделать это, но мне интересно, можете ли вы выполнить else if дважды без копирования вставки.

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)

person Sim    schedule 21.02.2013    source источник
comment
Не могли бы вы предоставить весь код?   -  person Anthony Forloney    schedule 21.02.2013
comment
Вам действительно нужно придать этому больше контекста - на данный момент невозможно дать полезный ответ.   -  person Jon Skeet    schedule 21.02.2013
comment
Поместить все if в цикл while ??   -  person Aditi    schedule 21.02.2013
comment
Кошки никогда не царапаются дважды. Просто поместите его в бесконечный цикл.   -  person Shawn D.    schedule 21.02.2013
comment
Я пропускаю ваш вопрос. Вы ищете в то время как и для операторов?   -  person ThanksForAllTheFish    schedule 21.02.2013
comment
Если вы хотите быть смелым (ударение на слове "смелый"), используйте оператор goto.   -  person Buhake Sindi    schedule 21.02.2013


Ответы (2)


Вся логика if-else излишня. Поместите изображения в упорядоченную коллекцию (массив, список) в том порядке, в котором они должны отображаться, например:

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

Затем пройдитесь по коллекции или сохраните индекс, указывающий на следующую картинку.

person Ingo    schedule 21.02.2013
comment
значит ли это, что картинки должны быть в порядке? - person Sim; 21.02.2013
comment
@user1667456 user1667456 — Располагая их в определенном порядке в массиве, вы определяете их порядок. - person Ingo; 21.02.2013

Насколько я понимаю, вы перемещаетесь по последовательности изображений, поэтому вы можете сделать что-то вроде этого:

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 в зависимости от обратного отсчета.

person paxdiablo    schedule 21.02.2013