Просмотр полной версии : Задержка выполнения кода [2]
как можно осуществить такое:
1. идет последовательность кадров. один кадр нужно задержать на определенное количество секунд, затем воспроизведение продолжится.
2. нужно несколько кадров повторить определенное количество раз, затем воспроизведение продолжается как обычно
3. в один из кадров вставлен символ (во флэше он вроде так называется, другими словами - несколько кадров в одном) нужно дождаться, когда символ олностью проигратся, потом воспроизведение продолжается со следующего кадра
Вот например задержка в десятом кадре на две секунды
stop();
setInterval(function () {_root.play();}, 2000);
KidsKilla
10.06.2005, 03:50
у potapenko (http://potapenko.com/rus/articles/conveyor.htm) есть класс Conv
те он нужен.
2Arhip >>Как организовать задержку, скажем не на 2 секунды, а на 5 кадров?
var n=5;
this.stop();
this.onEnterFrame=function(){
if(!n--){
this.play();
delete n;
delete this.onEnterFrame;
}
}
оффтоп : ты вставил последнее слово=)
выходит, что еще не последнее: твой пример <...DelayEvent.create(this.play,2000)> для
возобновления проигрывания работать не будет, потому как play без объекта приложения
ничего не запустит, то что ты передаешь this.play ничего не меняет - все равно это
только ссылка на функцию и вызовется она через setInterval в пустоте..
чтобы заработало придется передать еще и объект, который эту функцию вызовет:
function create (ob,fnct,dly){
var arg=arguments.splice(3);// для этого примера не нужна, но если функция с параметрами, то пригодится
var id = setInterval (function (a){
fnct.apply(ob,a);
clearInterval (id);
}, dly, arg);
}
//////////////////////
this.stop();
create(this,play,1000)
Как класс
/**
* original idea by Silin
* @author Silin
* @version 1.2
*/
class orange.utils.DelayEvent
{
/**
* Creating the delay for function or method
* @usage orange.utils.DelayEvent.create(myObject,myMethod,delay)
* @param target target wich has the method to delay
* @param func function to delay
* @param delay delay in ms
* @return nothing
*/
public static function create (target:Object,method : Function, delay : Number) : Void
{
var args:Array = arguments.splice(3);
var id:Number = setInterval (function (args)
{
method.apply(target,args);
clearInterval (id);
}, delay, args);
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.