Просмотр полной версии : задержка и зацикливание кадров
как можно осуществить такое:
1. идет последовательность кадров. один кадр нужно задержать на определенное количество секунд, затем воспроизведение продолжится.
2. нужно несколько кадров повторить определенное количество раз, затем воспроизведение продолжается как обычно
3. в один из кадров вставлен символ (во флэше он вроде так называется, другими словами - несколько кадров в одном) нужно дождаться, когда символ олностью проигратся, потом воспроизведение продолжается со следующего кадра
Пихай в кадр, в котором должна произойти остановка , setInterval и задерживай сколько угодно :)
Вот например задержка в десятом кадре на две секунды
stop();
setInterval(function () {_root.play();}, 2000);
1 - в кадр в котором нада задерживаться...
stop();
time = 1000;
var i = setInterval(function () {
play();
clearInterval(i);
trace("идём дальше");
}, time);
2 -
в кадре предидущем первому из повторяемых
var x = o;
в первом из повторяемых кадров
x++;
в последнем из повторяемых кадров
if (x<=10) {
trace(x);
gotoAndPlay(6);
} else {
trace("идём дальше");
}
3 -
на кадре содержащем символ
stop();
на последнем кадре символа
_root.play();
дерзай...))
Вот например задержка в десятом кадре на две секунды
stop();
setInterval(function () {_root.play();}, 2000);
а тормозить ему интервал не нада?? ;)
/**
* original idea by Silin
* @author Silin
* @version 1.0
*/
class orange.utils.DelayEvent
{
/**
* Creating the delay for function or method
* @usage orange.utils.DelayEvent.create(myMethod,delay)
* @param func function to delay
* @param delay delay in ms
* @return nothing
*/
public static function create (func : Function, delay : Number) : Void
{
var fnct = arguments.shift ();
var dly = arguments.shift ();
var id = setInterval (function ()
{
fnct (arguments);
clearInterval (id);
}, dly, arguments);
}
}
Использование
function boo() {
trace("cool");
}
orange.utils.DelayEvent.create(this.boo,2000);
В твоем случае должно быть, что то вроде
this.stop();
orange.utils.DelayEvent.create(this.play,2000);
а тормозить ему интервал не нада?? ;)
Нада полюбасу ... но я щас сам торможу :D уже глаза закрываются ...
/**
* original idea by Silin
* @author Silin
* @version 1.0
*/
class orange.utils.DelayEvent
{
/**
* Creating the delay for function or method
* @usage orange.utils.DelayEvent.create(myMethod,delay)
* @param func function to delay
* @param delay delay in ms
* @return nothing
*/
public static function create (func : Function, delay : Number) : Void
{
var fnct = arguments.shift ();
var dly = arguments.shift ();
var id = setInterval (function ()
{
fnct (arguments);
clearInterval (id);
}, dly, arguments);
}
}
Использование
function boo() {
trace("cool");
}
orange.utils.DelayEvent.create(this.boo,2000);
В твоем случае должно быть, что то вроде
this.stop();
orange.utils.DelayEvent.create(this.play,2000);
вот погоди я тож так научусь...))) блин..)))
а тормозить ему интервал не нада?? ;)
Я мяго сказать чайник в это вопросе. Наверное я правильно понял Вас, в любом случае назрел другой вопрос -
При компиляции можно задать время проигрывания кадров. Например - 20 кадров можно проиграть за 5 секунд, а можно за 20. Как организовать задержку, скажем не на 2 секунды, а на 5 кадров?
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;
}
}
2Nirth
спасибо, канеш, тока идея как бы не моя, я там мимо проходил..
к слову в приведенном тобой варианте передать можно тока один аргумент
вот так поскдаднее будет, имхо
function create () {
var fnct = arguments.shift ();
var dly = arguments.shift ();
var id = setInterval (function (a){
fnct.apply(null,a);
clearInterval (id);
}, dly, arguments);
}
//////////////////////
f=function(a,b){
trace(a)
trace(b)
}
create(f,1000,'a','b')
оффтоп : ты вставил последнее слово=)
спасибо.
у potapenko (http://potapenko.com/rus/articles/conveyor.htm) есть класс Conv
те он нужен.
Самое то........
На все случаи жизни.....
оффтоп : ты вставил последнее слово=)
выходит, что еще не последнее: твой пример <...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)
2 Силин а не легче ле в таком случае будет расширить create в классе Delegate ... или юзать у тебя же Delegate
Updated: хотя нет , только лишний гемор
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.