PDA

Просмотр полной версии : ускореное воспроизведение мувика


Chas
26.10.2007, 04:22
возникла необходимость сделать мувик, где пользователь может управлять скоростью воспроизведения одного из символов, регулируя от 1x до 4x. когда это простая покадровка, то все просто - проигрываем программно:

function mcOnEnterFrame (){
mc.gotoAndStop (cur+step<mc._totalframes?cur+step:_totalframes);
}

но что делать, когда мувик - один кадр, внутри которого 3 мувика разной длины.
есть идеи?

kruasan
26.10.2007, 07:14
пусть mc1 - мув с минимальным количеством кадров. mc2,mc3 - остальные мувы.
Тогда:
в mc1 переходи на кадр cur+step<mc1._totalframes?cur+step:mc1._totalframes
в mc2 переходи на кадрMath.ceil(mc2._totalframes * mc1._currentframe/mc1._totalframes)
в mc3 переходи на кадрMath.ceil(mc3._totalframes * mc1._currentframe/mc1._totalframes)

CorC
26.10.2007, 10:13
еще setInterval

Chas
28.10.2007, 20:50
черт, а как вам такая функция:


static function playForward (mc:MovieClip,speed){
var flag=false;
if (flag=(flag || (mc._currentframe<mc._totalframes))) mc.gotoAndStop (Math.min(mc._currentframe+speed,mc._totalframes));
var i;
for (i in mc){
trace ("play child "+i);
if (mc[i].__proto__==MovieClip.prototype) flag=flag || playForward (mc[i],speed);
}
return flag;
}

CorC
29.10.2007, 09:53
1 ужасное оформление
2 в 1 if надо == а не =
3 прототипы устарели
4 после 2 if вообще билиберда

Chas
29.10.2007, 13:50
2CorC:
чувак.
это работает. проигрывает мувик, со всеми его подмувиками на speed кадров вперед.

flag=(flag || (mc._currentframe<mc._totalframes))

здесь одно =, потому что это присваивается новое значение flag, эквивалент

flag=flag || (mc._currentframe<mc._totalframes);
if (flag) ...

прототипы устарели? серьезно? скажи, а как мне еще определить является ли элемент родительского мувика mc[i] экземпляром класса MovieClip??
а дальше, если ты не понял, рекурсивно запускается playForward для каждого подмувика мувика.
а в результате выполнения функции возвращается true, если мувик еще можно проигрывать вперед или false если мувик и все его подмувики находятся в последнем кадре.

и с чего это оформление ужасное?

Nirth
29.10.2007, 14:08
прототипы устарели? серьезно? скажи, а как мне еще определить является ли элемент родительского мувика mc[i] экземпляром класса MovieClip??
есть же оператор instanceof
trace((mc[i] instanceof MovieClip).toString());