Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 - Интервальные функции.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
72.19 Кб
Скачать

6 Л абораторная работа №5

Лабораторная работа №5

«Функции работы со временем»

Методические указания

Повторное выполнение действий

Допустим, какие-то действия над клипом нужно выполнять через определенные промежутки времени. Раннее мы познакомились с событием Event.ENTER_FRAME, которое срабатывает каждый раз при смене кадра фильма или клипа (если для фильма установлена частота смены кадров 12 штук в секунду, то это событие будет срабатывать ровно 12 раз за секунду). Однако часто необходимо циклически повторять какое либо действие или группу действий с другой частотой, отличной от частоты смены кадров фильма. В этом случае нужно воспользоваться интервальной функцией.

Интервальная функция – это функция, которую Flash будет вызывать с установленной пользователем частотой. Частота указывается в миллисекундах. Например, частота 1000 будет означать, что интервальная функция будет вызываться раз в 1000 миллисекунд.

В одной секунде (с) 1000 миллисекунд (мс)

1 минута (мин) = 60 с = 60 000 мс

1 час (ч) = 60 мин = 3 600 с = 3 600 000 мс

Порядок использования интервальной функции:

1. Импортировать библиотеку flash.utils, которая содержит функции работы со временем.

2. Все действия, которые необходимо выполнять через определенные промежутки времени, нужно оформить в отдельную пользовательскую функцию, которая и является интервальной.

2. Вызвать глобальную функцию setInterval:

setInterval (<Имя_функции>, <кол-во миллисекунд>);

Здесь <Имя_функции> - это имя интервальной функции.

Вместо <кол-во миллисекунд> нужно подставить число, равное количеству миллисекунд между повторами функции.

Пример 1. Пусть необходимо раз в секунду увеличивать прозрачность клипа с именем clip.

import flash.utils.*; // импорт всей библиотеки flash.utils

// Вызов функции setInterval. Функция intFunction()

// будет вызываться раз в секунду

setInterval(intFunction, 1000);

// Это интервальная функция.

function intFunction():void {

clip.alpha -= 0.1;

}

Замечание: Интервальная функция оформляется как обычная пользовательская функция.

Вызов интервальной функции с параметрами

Иногда возникают ситуация, когда одна и та же интервальная функция должна вызываться с разными параметрами в зависимости от ситуации (например, можно написать интервальную функцию, перемещающую клип в нужную точку или функцию. позволяющую вращать клип по или против часовой стрелки на заданный угол).

Пример 2. Пусть при нажатии на клип butRight клип с именем clip будет поворачиваться каждую секунду на 5 градусов по часовой стрелке, а при нажатии клипа butLeft – на 5 градусов против часовой стрелки каждые полсекунды.

Замечание. На рабочем листе находятся символы-кнопки, которым были даны имена butRight и butLeft. onPress – событие, возникающее при нажатии кнопки.

import flash.utils.*;

// Интервальная функция. а – угол поворота

// обратите внимание, что ссылка на клип передается

// в качестве параметра

function intRotateClip(mClip: MovieClip, a: Number):void{

mClip.rotation += a;

}

// Добавление листенеров

butLeft.addEventListener(MouseEvent.CLICK, leftClick);

butRight.addEventListener(MouseEvent.CLICK, rightClick);

// Обработчик события нажатия клипа butRight

// Клип будет поворачиваться на 5 градусов по часовой

// стрелке каждую секунду

function rightClick(_event:MouseEvent) {

setInterval(intRotateClip, 1000, clip, 5);

}

// Обработчик события нажатия клипа butLeft

// Клип будет поворачиваться на 5 градусов против часовой

// стрелки каждую секунду

// в этом случае угол поворота должен быть отрицательным

function leftClick(_event:MouseEvent) {

setInterval(intRotateClip, 500, clip, -5);

}