среда, сентября 26, 2007

Тонкости addFrameScript

Существует недокументированная функция addFrameScript, которая может быть иногда полезна. Она позволяет задать функцию, которая будет вызываться при прохождении мувиклипом соответствующего кадра. Эта функция является отличной альтернативой коду в кадрах.

Вот ее синтаксис:
MovieClip.addFrameScript(frame_number:uint,function_to_call:Function)

Пример:

function myFunction()
{
trace('10th frame')
}

addFrameScript(9, myFunction); // кадры нумеруются с 0


Осталось только научится передавать параметры в эту функцию. Тут нам поможет класс Delegate от Ian Thomas.

package
{

public class Delegate
{
public static function create(handler:Function,...args):Function
{
return function(...innerArgs):void
{
handler.apply(this,innerArgs.concat(args));
}
}
}
}


Теперь мы можем вызывать нашу функцию с параметрами:

package {

import flash.display.*;

public class main extends Sprite {


public function main() {
for (var i:int=0; i<10; i++) {
var mc:MovieClip = new Quad() as MovieClip;
addChild(mc);
mc.addFrameScript(mc.totalFrames-1,Delegate.create(myFunction,i));
}
}

private function myFunction(i:int):void {
trace(i);
}
}
}


Оригинал

Кстати, Денис Коляко недавно ниписал класс ClipFactory.

Класс ClipFactory позволит вам создавать обычный мувиклип с указанным количеством пустых кадров, который вы в последствии сможете использовать в качестве анимационного клипа, выполняя действия в каждом кадре (навесив обработчики через метод addFrameScript).

4 комментария:

Unknown комментирует...

Вот это реално вещь! Спасибо

Unknown комментирует...

http://etcs.ru/blog/as3/clipfactory/

:)

Andrey Gorbatov комментирует...

ага, спасибо.

Анонимный комментирует...

анализ разработки разработка сайтов http://web-miheeff.ru анализ разработки