АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Повторение задачи в течение некоторого интервала времени

Читайте также:
  1. I СИТУАЦИОННЫЕ ЗАДАЧИ ПО ПРОФИЛЬНЫМ РАЗДЕЛАМ
  2. I. ОСНОВНЫЕ ЦЕЛИ, ЗАДАЧИ И ПРИНЦИПЫ ДЕЯТЕЛЬНОСТИ КПРФ, ПРАВА И ОБЯЗАННОСТИ ПАРТИИ
  3. I. Цель и задачи изучения дисциплины
  4. II. ЦЕЛИ И ЗАДАЧИ
  5. II. Цели и задачи Конкурса
  6. II. Цели и задачи учебно-ознакомительной практики
  7. II. ЦЕЛИ, ЗАДАЧИ И НАПРАВЛЕНИЯ ДЕЯТЕЛЬНОСТИ КЛУБА
  8. II. ЦЕЛИ, ЗАДАЧИ, ПРЕДМЕТ И ВИДЫ ДЕЯТЕЛЬНОСТИ ОРГАНИЗАЦИИ
  9. III. Высота времени
  10. III. Задачи ОЦП
  11. III. Основные задачи Управления
  12. III. Особенности режима рабочего времени локомотивных и кондукторских бригад

Класс Timer появился в ActionScript 3.0, и он призван заменить использовавшиеся ранее функции setInterval() и setTimeout(). Будучи созданным, экземпляр класса Timer вырабатывает события timer через равные промежутки времени. Интервал между событиями и их количество можно задать в конструкторе Timer:

var timer:Timer = new Timer(delay, repeatCount);

Настройка метода, обрабатывающего эти события, осуществляется с помощью метода addEventListener. После того как таймер создан и настроен слушатель его событий, запуск и остановка таймера осуществляются с помощью методов start() и stop().

Класс Timer представляет собой часть пакета flash.utils; также есть класс TimerEvent в пакете flash.events. Их необходимо импортировать:

package {

import flash.display.Sprite;

import flash.events.TimerEvent;

import flash.utils.Timer;

public class Example4 extends Sprite

{

// Объявляем и инициализируем переменную

// для хранения предыдущего значения таймера.

private var PreviousTime:Number = 0;

public function Example4()

{

var tTimer:Timer = new Timer(500, 10);

tTimer.addEventListener(TimerEvent.TIMER, onTimer);

tTimer.start();

}

private function onTimer(event:TimerEvent):void

{

// Выводим разницу между текущим значением таймера

// и его значением на момент последнего вызова функции.

trace(flash.utils.getTimer() - PreviousTime);

PreviousTime = flash.utils.getTimer();

}

}

}

Функция getTimer() входит в пакет flash.utils. Она возвращает количество миллисекунд, прошедших с момента запуска приложения.

В предыдущем примере интервал теоретически составляет 500 миллисекунд, но в реальности время зависит от производительности компьютера, который может выполнять и другие задачи, занимающие ресурсы процессора. Отсюда следует:

1. Не стоит полагаться на таймеры, если требуется очень высокая точность.

2. Не стоит полагаться на интервалы таймера, длительность которых меньше 10 миллисекунд.

Чтобы сымитировать работу функции setInterval() из ActionScript 2.0, счетчик повторений устанавливается на нуль, тогда события таймера будут формироваться бесконечно. В этом случае метод stop() аналогичен функции clearInterval() из AS 2.0 и прекращает формирование событий таймером.

Аналогично, если необходимо создать дубликат функции setTimeout() из AS 2.0, то счетчику повторений присваивается значение 1. Таймер ожидает заданное количество времени, формирует одно событие и останавливается.

Класс Timer позволяет создавать анимации, не зависящие от частоты смены кадров ролика, и осуществлять вызовы метода с любым интервалом.

Пример 5. Задан таймер. Один для квадратного спрайта (с частотой 50 миллисекунд).

package {

import flash.display.Sprite;

import flash.events.TimerEvent;

import flash.utils.Timer;

public class Example1 extends Sprite

{

private var square1:Sprite; // создаем объект и потом нарисуем на этом объекте квадрат

public function Example1() // тут начинается конструктор гл. кл. прогр.

{

// Создаем и отрисовываем спрайт

square1 = new Sprite(); // вызываем конструктор спрайта

square1.graphics.beginFill(0xff0000); // заливка

square1.graphics.drawRect(0, 0, 100, 100); // рисуем на square1 квадрат

square1.graphics.endFill(); // окончание заливки

addChild(square1); // добавляем square1 в список отображения

square1.x = 100; // Начальные координаты объекта square1

square1.y = 50;

// 1. Создаем таймер

var squareTimer:Timer = new Timer(50, 0); // 1. Создание таймера squareTimer

// 50 – это интервал повторения события (50 мс)

// 0 – число повторений (0 значит бесконечное число)

// 2. Добавляем слушателя onSquareTimer события TimerEvent.TIMER

squareTimer.addEventListener(TimerEvent.TIMER, onSquareTimer);

// 3. Запускаем таймер squareTimer

squareTimer.start();

}

// 4. Определяем тело метода-обработчика события таймера


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)