Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Использование потоков в анимации

Читайте также:
  1. А) с использованием конструктора таблиц
  2. Аддитивные потоковые шифры
  3. Блоковые и потоковые шифры
  4. В нем допускается использование смеси из объектов и простых типов (например, числа, символы и др.),
  5. В. Использование экзогенных жиров тканями
  6. ВЕДОМСТВЕННАЯ АТТЕСТАЦИЯ СИСТЕМ УПРАВЛЕНИЯ ТАМОЖЕННЫМИ ОРГАНАМИ НА СООТВЕТСТВИЕ ТРЕБОВАНИЯМ ГОСТ Р ИСО 9001:2008 И ИСПОЛЬЗОВАНИЕ ЕЕ РЕЗУЛЬТАТОВ
  7. Выполните команду ВИД/Использование задач. Появится окно со списком работ и назначенными на них ресурсами. Выполните команду ВИД/Таб­лица/Трудо­затраты.

Зачастую потоки используются для создания простой анимации. Иногда инструкции выполняемые браузером, часто называют потоком выполнения апплета. Апплет может выполнять две и более задач одновременно. Например, вращение логотипа и зажигание заголовков на экране. В таких случаях апплет использует несколько потоков (многопоточный апплет). Один поток вращает логотип, второй – зажигает заголовки. Когда программы используют несколько потоков, они должны выполняться в одно и то же время. Это значит, что браузер должен очень быстро переключаться с одного потока на другой, пока выполняется апплет.

Как большинство тех вещей, которые составляют программы, поток – это объект, который соответствует определению класса. Поток объявляется определением объекта класса Thread (пакет java.lang). Существует два способа для того. Чтобы приложения работали в различных потоках:

- расширение класса Thread

- реализация интерфейса Runnable

Т.е. можно сделать класс поточным, расширив класс java.lang.Thread, при этом получается доступ ко всем методам потоков:

 

public class SS extends Thread

 

Другой способ решения задачи – реализация интерфейса Runnable, который имеет только метод run (), то есть класс, реализующий Runnable, должен определить метод run (), именно этот метод выполняет фактическую работу, возложенную на поток:

 

public class SS extendsApplet implements Runnable

 

Для запуска объекта Thread программа вызывает функцию start объекта Thread. Данная функция в свою очередь, вызывает функцию объекта run.

Пример бегущей строки

Рассмотрим приложение, реализующее бегущую строку:

 

// MargueeMessage.java

 

1 import java. awt.*;

2 import java. applet.*;

3 public class MargueeMessage extends Applet

implements Runnable{

4 Thread MarqueeThread = null;

5 String Message = "Hello, Java!";

6 Font font = new Font ("Courier", Font.BOLD, 20);

7 int x, y;

8 public void init (){

9 x=size ().width;

10 y = size ().height/2;

11 }

 

12 public void start (){

13 if (MarqueeThread ==null){

14 MarqueeThread = new Thread (this);

15 MarqueeThread.start ();

16 }

17 }

 

18 public void run (){

19 while (true){

20 x=x-5;

21 if (x == 0)

22 x = size ().width;

23 repaint();

24 try{MarqueeThread.sleep(100);}

25 catch(InterruptedException e) {}

26 }

27 }

28 public void paint (Graphics g){

29 g.setFont (font);

30 g.drawString (Message, x, y);

31 }

32 }

Рис 26.1 Бегущая строка в окне апплета

 

Используя слово this, апплет создает поток, который соответствует текущему апплету. В данном примере функция апплета start () вызывает метод потока start (), который будет вызывать метод run объекта Thread, в методе run описывается реальный процесс выполняемый потоком.

Функция run организует обычный бесконечный цикл (или пока пользователь не закроет окно апплета)

В рамках данного цикла апплет обновляет координаты х-, у -, координаты определяются с помощью метода size (), и используемые для вывода строки. Каждый раз, когда обновляются координаты вызывается функция repaint, вызывающая paint () для обновления экрана.

Управление скоростью, с которой программа прокручивает текст сообщения, апплет использует функцию thread.sleep для простановки выполнения потока, или временно приостановить работу потока. В случае прерывания sleep, она приводит к исключению InterruptedException, в таком случае функция перехватывает и игнорирует исключения.

 

 


Дата добавления: 2015-10-29; просмотров: 96 | Нарушение авторских прав


Читайте в этой же книге: Создание программы. | Классы String и String Buffer | Основные свойства объектно-ориентированного подхода | Создание собственных пакетов. | Класс Graphics | Интерфейс Java2D | Графический интерфейс пользователя. | Менеджеры компоновки | Слушатели (listeners) полей и кнопок. | Обработка событий мыши |
<== предыдущая страница | следующая страница ==>
Классы адаптеры| Классы исключительных ситуаций

mybiblioteka.su - 2015-2024 год. (0.006 сек.)