Вступление Примеры | Словарь |Вопросы Sun Microsystems |
Примеры программирования на Java
import java.awt.*;
import java.applet.*;
//----------------------------
public class replace extends Applet implements Runnable
{
Graphics g;
Image ImageBlack; // Переменные для хранения изображения
Image ImageColor; // картинки: черно-белого и цветного
int width;
int height;
boolean load_image = false;
int delay1 = 100; // Значение задержки по умолчанию
//--------------------------------
public void init()
{
g = getGraphics();
// Определение ширины и высоты окна аплета
width = size().width;
height = size().height;
// Считывание параметров из файла black.html.
// Если параметры не заданы, то берется значение по умолчанию
String parameter = getParameter("delay");
if (parameter != null)
delay1 = Integer.parseInt(parameter);
// Получение изображения из файлов
ImageBlack = getImage(getCodeBase(), "b.gif");
ImageColor = getImage(getCodeBase(), "p.gif");
// сначало создается изображение вне экрана ( createImage), а
// затем выводится на экран функцией drawImage.
Image offScrImage = createImage(width, height);
Graphics offScrGC = offScrImage.getGraphics();
offScrGC.drawImage(ImageBlack, 0, 0, width, height, this);
}
//===============================================
// Для задания потока аплет создает экземпляр класса Thread
// и вызывает функцию start
public void start()
{
(new Thread(this)).start();
}
//================================================
// Организация задержки
void delay()
{
try
{
Thread.sleep(delay1);
}
catch (InterruptedException e)
{
}
}
//================================================
public void run()
{
while (!load_image) // Ожидание загрузки фонового изображения.
// Только после этого продолжится работа.
while (true) // Бесконечный цикл
{
// После каждого прохода цикла функция создает новый
// графический контекст, так как после каждого прохода
// цикла изменяется прямоугольник отсечения
for (int x = 0; x < width; x++)
{
Graphics g2 = g.create();
g2.clipRect (0,0,x,height);// Задание прямоугольника
// отсечения
g2.drawImage (ImageColor, 0, 0, width, height, this);
delay();
}
for ( int x = width-1; x>= 0; x--)
{
Graphics g2 = g.create();
Graphics g3 = g.create();
g2.clipRect (x,0,1,height); // Задание прямоугольника
// отсечения
g2.drawImage (ImageBlack, 0, 0, width, height, this);
g3.clipRect (0,0,x,height);// Задание прямоугольника
// отсечения
g3.drawImage (ImageColor, 0, 0, width, height, this);
delay();
}
}
}
//===================================================
public boolean imageUpdate ( Image img, int infoflags, int x, int y,
int w, int h)
{
// Пока фоновое изображение загружается, параметр
// infoflags не равен ALLBITS. Переменная done_loading_image
// равна false, и в строке статуса Вы видите Loading
if (infoflags == ALLBITS)
{
load_image = true;
repaint();
return false;
}
else
return true;
}
//======================================================
public void paint (Graphics _g)
{
if (!load_image)
showStatus ("Loading");
else
{
width = size().width;
height = size().height;
showStatus ("Applet started");
g.drawImage (ImageBlack, 0, 0, width, height, this);
}
}
}
|
||