Бывалый

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.11.2006
Репутация: нет Всего: нет
|
Такая проблемка есть анимация, простая перестановка картинок местами, в один момент врубается показ изображения, врубается actionscript ом, проблема в том что после этого ролик все тормозит помогите плз вот код скрипта | Код | // импортируем нужные классы import mx.transitions.Tween; import mx.transitions.easing.*; // // константы: // размер блока для маски var blockWidth:Number = 50; // отступ рамки от картинки var picMargin:Number = 30; // // // функция, создающая рамку и подгружающая картинку // в качестве аргумента принимает линкейдж картинки function createPicture(pic:String):Void { // создаем клип-контейнер var effect_mc:MovieClip = this.createEmptyMovieClip("effect_mc", this.getNextHighestDepth()); // создаем клип, в котором нарисуем фон var bg_mc:MovieClip = effect_mc.createEmptyMovieClip("bg_mc", 0); // подгружаем картинку и ставим ее в нужные // координаты, в зависимости от значения picMargin var pic_mc:MovieClip = effect_mc.attachMovie(pic, "pic_mc", 10, {_x:picMargin, _y:picMargin}); // временно делаем картинку невидимой pic_mc._visible = false; // так как картинка загружена и размер ее теперь известен, // рисуем для нее фон, вызывая функцию drawRectangle() drawRectangle(bg_mc, pic_mc._width+picMargin*2, pic_mc._height+picMargin*2, true); // ставим всю нашу композицию по центру сцены effect_mc._x = Math.round((Stage.width-effect_mc._width)/2); effect_mc._y = Math.round((Stage.height-effect_mc._height)/2); // создаем клип-контейнер для маски var mask_mc:MovieClip = effect_mc.createEmptyMovieClip("mask_mc", 20); // назначаем его маской для картинки pic_mc.setMask(mask_mc); // рисуем в клипе-маске кучу квадратов и расставляем // их по местам, полностью закрывая картинку var i:Number; var k:Number; for (i=0; i<Math.ceil(pic_mc._width/blockWidth); i++) { for (k=0; k<Math.ceil(pic_mc._height/blockWidth); k++) { // создаем новый клип var newBlock_mc:MovieClip = mask_mc.createEmptyMovieClip("bl"+i+k, mask_mc.getNextHighestDepth()); // ставим его в нужное место newBlock_mc._x = i*blockWidth+picMargin; newBlock_mc._y = k*blockWidth+picMargin; // рисуем в нем квадрат drawRectangle(newBlock_mc, blockWidth, blockWidth, false); } } // запускаем анимацию startAnimation(effect_mc); } // // функция, которая запускает анимацию // аргументом принимает ссылку на клип с эффектом function startAnimation(target_mc:MovieClip):Void { // создаем твин для _xscale фона var bgTween:Tween = new Tween(target_mc, "_xscale", Bounce.easeOut, 1, 100, 1, true); // когда анимация закончится bgTween.onMotionFinished = function():Void { // делаем картинку снова видимой target_mc.pic_mc._visible = true; // удаляем обработчик событий delete this.onMotionFinished; // для каждого квадрата for (var i in target_mc.mask_mc) { var block_mc:MovieClip = target_mc.mask_mc[i]; // запоминаем координаты клипа и ставим его в центр block_mc.x0 = block_mc._x; block_mc.y0 = block_mc._y; block_mc._x = target_mc.pic_mc._width/2; block_mc._y = target_mc.pic_mc._height/2; // делаем _xscale и _yscale равными нулю block_mc._xscale = block_mc._yscale =0; // запускаем твиновую анимацию для квадратов в маске // через паузу block_mc.intervalID = setInterval(blockMover, (block_mc.x0/blockWidth*block_mc.y0/blockWidth*100), block_mc); } }; } // // функция, анимирующая квадраты маски function blockMover(target_mc:MovieClip):Void { // очищаем интервал, чтоб анимация не повторялась clearInterval(target_mc.intervalID); // создаем твины для _x, _y, _xscale, _yscale var xTween:Tween = new Tween(target_mc, "_x", Bounce.easeOut, target_mc._x, target_mc.x0, 2, true); var yTween:Tween = new Tween(target_mc, "_y", Bounce.easeOut, target_mc._y, target_mc.y0, 2, true); var xScTween:Tween = new Tween(target_mc, "_xscale", Bounce.easeOut, Math.random()*20, 100, 2, true); var yScTween:Tween = new Tween(target_mc, "_yscale", Bounce.easeOut, Math.random()*20, 100, 2, true); } // // функция, которая умеет рисовать прямоугольники // нужного размера, если надо, то с рамкой. // передаваемые аргументы: // target_mc - клип, в котором рисуем; // width - ширина; // height - высота; // withBorder - если true, то будет рамка, если false, то не будет function drawRectangle(target_mc:MovieClip, width:Number, height:Number, withBorder:Boolean):Void { // если надо if (withBorder) { // то говорим, чтоб рамку рисовал target_mc.lineStyle(3, 0xFFFFFF); } // рисуем черный прямоугольник with (target_mc) { beginFill(0, 100); moveTo(0, 0); lineTo(width, 0); lineTo(width, height); lineTo(0, height); lineTo(0, 0); endFill(); } } // createPicture("pic");
|
честно говоря он был подсмотрен, но сжалтесь очень надо, помогите плз
|