Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция setInterval. Задание №4. Интервал time измеряется в миллисекундах. Значение time=1000 соответствует одному вызову в секунду. Среда Flash вызывает функцию по возможности ближе к заданному интервалу




Функция setInterval

Обработчик события onEnterFrame позволяет программировать повторяющиеся операции с объектом, но частота их повторения жестко привязана к используемой в фильме частоте смены кадров. Эту частоту нельзя сделать различной для различных клипов, так как частота смены кадров устанавливается сразу для всего фильма. Это очень неудобно в случае многокадровых фильмов и наличия нескольких анимированных клипов, так как согласовать скорость проигрывания мультипликации с частотой вызовов кода порой совсем непросто.

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

setInterval(func, time, [param1, param2, ..., paramN]) где: func имя функции, которая должна периодически вызываться. time период времени, через который должна вызываться функция; ► [param1, param2, ..., paramN] — необязательные параметры для передачи возможных аргументов функции func.

Имя вызываемой функции не должно заключаться в кавычки.

Интервал time измеряется в миллисекундах. Значение time=1000 соответствует одному вызову в секунду. Среда Flash вызывает функцию по возможности ближе к заданному интервалу, но возможны отклонения. На точность вызовов влияет работа самого компьютера (точность отсчета интервала) и другие факторы (вызов функции должен ждать завершения текущих операций и т. д. ).

Задание №4

1. Создать новый Flash-документ.

2. В окне Actions ввести следующий код

function test(){ trace(getTimer()); }

ID=setInterval(test, 100);

3. Протестировать при частоте смены кадров 12 fps, 10fps и 1fps.

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

Если функция setInterval() должна вызываться " короткую" функцию, то последнюю можно определить при вызове setInterval:

setInterval( function(par){trace(par); }, 100, " Hello!!! " );

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

setInterval(objRef: Object, methodName: String,

interval: Number,    

    [param1, param2, ..., paramN]) : Number)

где:

objRefимя объекта или ссылка на него (не строка! );

methodNameимя метода в виде строки;

intervalинтервал времени, через который метод должен вызываться;

[param1, param2, ..., paramN] — параметры, передаваемые методу.

Задание №5

1. Создать новый Flash-документ.

2. Создать в нем два слоя с именами Actions и Clip.

3. Создать символ в виде подсвеченного шарика и поместить его экземпляр c именем clip на слой Clip.

 

4. При щелчке мышки объект clip должен постепенно двигаться по направлению к указателю мышки. Для программирования данного действия описать следующие переменные уровня основной временной шкалы

· Xstart и Ystart — координаты clip в момент щелчка мышки,

·  targetX и targetY — координаты положение мышки.

· k — угловой коэффициент прямой, по которой происходит движение.

· Dx=2*(targetX-Xstart)/Math. abs(targetX-Xstart) — шаг изменения х.

Метод moveToMouse осуществляет перемещение шарика по направления к (Xstart; Ystart) на один шаг.

Написать обработчик clip. onMouseDown, в котором эти параметры вычисляются и вызывается функция setInterval для метода moveToMouse объекта clip c интервалом 100.

ID=setInterval(this, " moveToMouse", 100);

Обратите внимание, что при вызове при помощи setInterval() метода объекта имя метода должно быть представлено строго в строковом виде, имя объекта — в виде идентификатора.

5. После события MouseDown начинаются периодические вызовы функции moveToMouse, являющейся методом объекта clip

clip. moveToMouse = function() {

this. _x += Dx; //задаем изменение координаты x

this. _y =…; } // вычисляем координату y

6. Протестировать флеш.

В созданном фильме шарик непрерывно двигается по направлению указателя мышки в момент щелчка и не останавливается, достигнув его.

Поэтому надо дописать функцию проверки конца движения. Если координаты clip по абсолютной величине достаточно близки к запомненным координатам мышки в момент щелчка, последовательность вызовов метода moveToMouse надо прекратить.

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

ID=setInterval(this, " moveToMouse", 100);   

clearInterval(ID);

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...