Импортируйте вашу картинку, сделайте из нее мувиклип и задайте для мувика линкейдж myPic. Удалите все со сцены и для кадра пропишите сценарий:
Код:// Объявляем переменную, значение которой будет // размером кусочка картинки var bSize = 40; // Получаем размеры картинки без вывода // на сцену самой картинки this.createEmptyMovieClip("temp", 0); this.temp.attachMovie("myPic", "myPic", 0); var picWidth:Number = this.temp.myPic._width; var picHeight:Number = this.temp.myPic._height; removeMovieClip(this.temp); // // Аттачим картинку столько раз, сколько будет квадратиков function takePic() { var picHolder:MovieClip = this.createEmptyMovieClip("picHol", 0); var dep:Number = 0; for (var i:Number = 0; i<picHeight/bSize; i++) { for (var k:Number = 0; k<picWidth/bSize; k++) { var block:MovieClip = picHolder.createEmptyMovieClip("block"+i+k, dep); dep++; with (block) { attachMovie("myPic", "myPic", 0); createEmptyMovieClip("mask", 1); mask._x = k*bSize; mask._y = i*bSize; mask.beginFill(0, 100); mask.lineTo(bSize, 0); mask.lineTo(bSize, bSize); mask.lineTo(0, bSize); mask.lineTo(0, 0); mask.endFill(); myPic.setMask(block.mask); _x = picWidth-mask._x; _y = picHeight-mask._y; } block.intervalID = setInterval(blockMover, dep*200+1000, block); } } } // Функция, передвигающая куски картинки function blockMover(clip) { clearInterval(clip.intervalID); clip.targetX = clip.targetY=0; clip.onEnterFrame = function() { this.dist = Math.sqrt(Math.pow((this.targetX-this._x), 2)+Math.pow((this.targetY-this._y), 2)); if (Math.abs(this.dist)>1) { // Обратите внимание, что мы присваиваем новые координаты // и приэтом делим результат на 4 (для эффекта торможения) // попробуйте подставить разные значения для Х и У, тогда // кусочки будут двигаться по дуге :) this._x += (this.targetX-this._x)/4; this._y += (this.targetY-this._y)/4; } else { this._x = this.targetX; this._y = this.targetY; delete this.onEnterFrame; } }; } // takePic();
Исходник




Ответить с цитированием