Animacja kolorem
Pokażę przykład, w którym zmiana koloru rysunku sprawi wrażenie ruchu.
Każda klatka prezentowanej animacji jest dokładnią taką samą figurą tzn absolutnie nic się w niej nie zmienia, za wyjątkiem użytego koloru.
Zajmę się "ruchem" dolnego paska, zasada dla innych części sceny jest taka sama.
1. przygotuję 4 gradienty i zapamiętam je w tablicy 2. narysuję pasek 3. w tablicy palet przesunę kolory : 4. klatka animacji to sekwencja : przesun(); pasek(); |
Oto zestaw potrzebnych procedur:
void gradienty() { for(int i=0;i<64;i++) { pal[i]=new Color(100+2*i,0,0); pal[i+64]=new Color(0,100+2*i,0); pal[i+128]=new Color(0,0,100+2*i); pal[i+192]=new Color(100+2*i,100+2*i,100+2*i); } } |
W przykładzie posługuję się czterema gradientami:
czerwonym, zielonym, niebieskim i szarym, każdy o długości 64.
Poniżej procedury potrzebne do "klatki" animacyjnej:
void pasek(Graphics g) { double poz=-9.2; int kolor=0; lo28.pkt p= new lo28.pkt(-7,poz); lo28.pkt k=new lo28.pkt(-7,poz-1); while(p.x<7) { g.setColor(pal[kolor]); lo28.linia(g,p,k); p.x+=0.05; k.x+=0.05; kolor++; if(kolor>255)kolor=0; } } |
void przesun() { pal[0]=pal[255]; for(int i=255; i>0 ; i--) pal[i]=pal[i-1]; } |