"animacja poklatkowa"

0

Witajcie dobrzy ludzie!

Mam animacje wczytującą i wyświetlającą kolejne obrazki. Listing poniżej:


public class Obrazek extends JApplet {
    ImageIcon[] rys = new ImageIcon[17];
    int nr = 0;
    int dt = 300;
    boolean powrot;
    public void init() {
        try {
            for (int n = 0; n < 17; n++) {
                rys[n] = new ImageIcon(getClass().getResource("/Duke/T" + (n + 1) + ".gif"));
            }
        } catch (Exception e) {}
    }
    public void paint(Graphics g) {
        try {
        rys[nr].paintIcon(null, g, 100, 50);
        } catch (Exception e) {
            g.drawString("Błąd grafiki", 100, 100); }
        nr++;
        if (nr > 16) { nr=0;  }
        try {
            Thread.sleep(dt);
        } catch (InterruptedException e) {}
        repaint();
    }

Problem pojawia się, gdy chcę żeby animacja odbywała się "w kółko" tzn. po wyświetleniu ostatniego pliku, program ma wyświetlić plik o indeksie 15, 14, 13 itd... Czyli obrazki teraz mają mi się wyświetlać od lewej do prawej.
do tego celu jest deklaracja zmiennej powrot typu boolen.
Jesli powrot = false to ma wyswietlac obrazki w kolejności rosnącej, jesli true to ma użyć konstrukcji typu 16-nr.
Kto podpowie mi jak do tego zadania podejść?

Z góry dziękuję za wszystkie sugestie.

0

A musi być zmienna logiczna?

public class Obrazek extends JApplet {
    ImageIcon[] rys = new ImageIcon[17];
    int nr = 0;
    int dt = 300;
    int skok = 1;
    public void init() {
        try {
            for (int n = 0; n < 17; n++) {
                rys[n] = new ImageIcon(getClass().getResource("/Duke/T" + (n + 1) + ".gif"));
            }
        } catch (Exception e) {}
    }
    public void paint(Graphics g) {
        try {
        rys[nr].paintIcon(null, g, 100, 50);
        } catch (Exception e) {
            g.drawString("Błąd grafiki", 100, 100); }
        nr+=skok;
        if (nr > 16) { skok*=-1; nr = 15; }
        if (nr < 0) { skok*=-1; nr = 1; }
        try {
            Thread.sleep(dt);
        } catch (InterruptedException e) {}
        repaint();
    }
0

Bogdans, prowadzący sobie tego życzy...
Wiem, że zadanie jest banalne, tylko nie wiem jak go ugryźć...

0
 
public class Obrazek extends JApplet {
    ImageIcon[] rys = new ImageIcon[17];
    int nr = 0;
    int dt = 300;
    boolean powrot = true;
    int skok = 1;
    public void init() {
        try {
            for (int n = 0; n < 17; n++) {
                rys[n] = new ImageIcon(getClass().getResource("/Duke/T" + (n + 1) + ".gif"));
            }
        } catch (Exception e) {}
    }
    public void paint(Graphics g) {
        try {
        rys[nr].paintIcon(null, g, 100, 50);
        } catch (Exception e) {
            g.drawString("Błąd grafiki", 100, 100); }
        nr+=(powrot?1:-1);
        if (nr > 16) { powrot=!powrot; nr = 15; }
        if (nr < 0) { powrot=!powrot; nr = 1; }
        try {
            Thread.sleep(dt);
        } catch (InterruptedException e) {}
        repaint();
    }
0

Bogdans, dziękuje Ci slicznie :)

Mam jeszcze pytanie do linjki: nr+=(zwrot?1:-1); Co oznacza ten zapis? Jestem początkująca w javie, więc proszę o wyrozumiałość...

Jeszcze raz dziekuje za pomoc.

Skrócony zapis if'a :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1