Функция 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|