|
|
|||||
Пауза выполнения кода
Собствено сабж.
Форум почитал, поиском попользовался. Кое-что нашел. Но для себя решения так и не нашел. Опыта маловато. Однако нужно решить задачу Эта функция работает. Все хорошо. Но внутри функции мне надо осуществить задержку выполнения кода. Между kulisi.play(); и gotoAndPlay("go_m5");. Хочу сделать задержку 2 секунды. Понимаю что во Флеше этим почти никто не пользуется. Но у меня уж такая задача. Иначе мне сейчас никак. Помогите, плиз Добавлено через 1 минуту Про таймеры начитался, но как ими нормально воспользоваться, пока не разобрался. |
|
|||||
package ru.atflash.utils { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; /** * Реализует задерженные вызовы * @author rzer * @version 1.0 */ public class AtDelayedCalls { private static var timeCalls:Array = []; private static var eventflow:Sprite; /** * Откладывает вызов функции, на некоторое время. * * @param func Function Функция, вызов которой откладывается * @param args Array Аргументы функции * @param after uint Задержка перед вызовом (при значении 0 - через один кадр) * @param alwaysAdd Boolean Добавление происходит, даже если такая функция уже в стеке * @param resetTimer Boolean Обнуляется ли таймер после добавления */ public static function doLater(func:Function, args:Array = null, after:uint = 0, alwaysAdd:Boolean = false, resetTimer:Boolean = false):void { if (!eventflow) { eventflow = new Sprite(); eventflow.addEventListener(Event.ENTER_FRAME, onFrame); } var index:int = timeCalls.indexOf(func); var dTime:uint = after + getTimer(); if (alwaysAdd || index == -1){ timeCalls.push(func, args, dTime); }else { if (resetTimer) { if (index != -1) { timeCalls[index + 2] = dTime; } } } } public static function forget(func:Function, deleteAll:Boolean = false):void { var aFunc:Function; for (var i:int = timeCalls.length - 1; i > 0; i = i - 3) { aFunc = timeCalls[i - 2]; if (aFunc == func) { timeCalls.splice(i - 2, 3); if (!deleteAll) { return; } } } } private static function onFrame(e:Event):void { var args:Array; var func:Function; var after:uint; var time:uint; time = getTimer(); for (var i:int = timeCalls.length - 1; i > 0; i = i - 3) { after = timeCalls[i]; args = timeCalls[i - 1]; func = timeCalls[i - 2]; if (after < time) { timeCalls.splice(i - 2, 3); func.apply(null,args); } } } } }
__________________
if (love is true) break my.heart; |
|
|||||
ого.. все так сложнно?
из этого мне мало понятно как осуществить.. но спасибо |
|
|||||
Это вспомогательный класс, тебе его надо положить в корень твоего проекта в папку ru/atflash/utils/, назвав AtDelayedCalls.as и забыть о том, что он там лежит.
Там где надо, делаешь нужный импорт: И делаешь задержку одной строчкой:
__________________
if (love is true) break my.heart; |
|
|||||
так. Я правильно понял? В папке где лежит project.fla нужно разместить файл следующего вложения:
.../ru/atflash/utils или где-то в самом корне Adobe? |
|
|||||
Всё правильно (где лежит project.fla)
__________________
if (love is true) break my.heart; |
|
|||||
А для этого обязательно содавать именно проект во флеше?
Или имея только fla-файл сделать в его папке нужно вложение и все заработает. Ну сейчас попробую Добавлено через 42 секунды обоже! как криво написал.. |
|
|||||
Файл текстовый AtDelayedCalls.as. Относительно project.fla он лежит в папке ru/atflash/utils/
__________________
if (love is true) break my.heart; |
|
|||||
Сказочно!! Все работает! Ура! Спасибо
|
Часовой пояс GMT +4, время: 04:13. |
|
« Предыдущая тема | Следующая тема » |
|
|