Просмотр полной версии : ускореное воспроизведение мувика
возникла необходимость сделать мувик, где пользователь может управлять скоростью воспроизведения одного из символов, регулируя от 1x до 4x. когда это простая покадровка, то все просто - проигрываем программно:
function mcOnEnterFrame (){
mc.gotoAndStop (cur+step<mc._totalframes?cur+step:_totalframes);
}
но что делать, когда мувик - один кадр, внутри которого 3 мувика разной длины.
есть идеи?
пусть 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)
черт, а как вам такая функция:
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;
}
1 ужасное оформление
2 в 1 if надо == а не =
3 прототипы устарели
4 после 2 if вообще билиберда
2CorC:
чувак.
это работает. проигрывает мувик, со всеми его подмувиками на speed кадров вперед.
flag=(flag || (mc._currentframe<mc._totalframes))
здесь одно =, потому что это присваивается новое значение flag, эквивалент
flag=flag || (mc._currentframe<mc._totalframes);
if (flag) ...
прототипы устарели? серьезно? скажи, а как мне еще определить является ли элемент родительского мувика mc[i] экземпляром класса MovieClip??
а дальше, если ты не понял, рекурсивно запускается playForward для каждого подмувика мувика.
а в результате выполнения функции возвращается true, если мувик еще можно проигрывать вперед или false если мувик и все его подмувики находятся в последнем кадре.
и с чего это оформление ужасное?
прототипы устарели? серьезно? скажи, а как мне еще определить является ли элемент родительского мувика mc[i] экземпляром класса MovieClip??
есть же оператор instanceof
trace((mc[i] instanceof MovieClip).toString());
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.