Иллюстрированный самоучитель по Java



              

Анимация


Есть несколько способов создать анимацию. Самый простой из них — записать заранее все необходимые кадры в графические файлы, загрузить их в оперативную память В виде Объектов класса Image или Bufferedlmage и выводить по очереди на экран.

Это сделано в листинге 15.9. Заготовлено десять кадров в файлах runl.gif, run2.gif, , runl0.gif. Они загружаются в массив imgt] и выводятся на экран циклически 100 раз, с задержкой в 0,1 сек.

Листинг 15.9.

Простая анимация 

import java.awt.*; 

import ]ava.awt.event.*;

class SimpleAnim extends Frame{

private Image[] img = new Image[10]; 

private int count; 

SimpleAnim(String s){ super(s);

MediaTracker tr = new MediaTracker(this); 

for (int k = 0; k < 10; k++){

img[k] = getToolkit(}.getlmage("run"+(k+D+".gif"); 

tr.addlmage(img[k], 0); 

try{

tr.waitForAll(); // Ждем загрузки всех изображений 

}catch(InterruptedException e)(} 

setSize(400, 300); 

setvisible(true);

},

public void paint(Graphics g){

g.drawImage(img[count % 10], 0, 0, this);

}

// public void update(Graphics g){ paint(g); } 

public void go(){ while(count < 100){

repaint(); // Выводим следующий кадр 

try{       // Задержка в 0.1 сек

Thread.sleep(100); 

}catch(InterruptedException e){)

count++; 

public static void main(String[] args){

SimpleAnim f = new SimpleAnim(" Простая анимация");

f.go();

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit(0); }

}); 

}

Обратите внимание на следующее важное обстоятельство. Мы не можем обратиться прямо к методу paint () для перерисовки окна компонента, потому что выполнение этого метода связано с операционной системой — метод paint о выполняется автоматически при каждом изменении содержимого окна, его перемещении и изменении размеров. Для запроса на перерисовку окна в классе component есть метод repaint ().




Содержание  Назад  Вперед