Да, простят меня корифеи флеш, но решила дополнить этот УРОК и расписать все подробно , именно для начинающих, тем более, что меня об этом уже несколько ПЧ попросили...))
В конце урока получим такой эффект (поводите мышкой по картинке)
Огромное СПАСИБО novprospekt за TweenLite и код скрипта и jzayka и ВАТ за подсказки при выполнении урока. Без них не справилась бы...))
//Ширина и высота кусочка картинки
const IMAGE_PIECE_WIDTH:uint = 50;
const IMAGE_PIECE_HEIGHT:uint = 43;
//Мы хотим знать, сколько кусочков картинки размещается на сцене
var imagePieces:Number = 0;
picture.visible=false;
completeHandler();
function completeHandler():void {
//Получим bitmap data от картинки
var imageTextureMap:BitmapData = new BitmapData(picture.width,picture.height);
imageTextureMap.draw(picture);
//Вычисляем сколько колонок и строк мы будем иметь
var columns:Number = Math.ceil(imageTextureMap.width / IMAGE_PIECE_WIDTH);
var rows:Number = Math.ceil(imageTextureMap.height / IMAGE_PIECE_HEIGHT);
//Цикл по колонкам
for (var i = 0; i < columns; i++) {
//Цикл по строкам
for (var j = 0; j < rows; j++) {
//Создаем новый муви клип - контейнер одной частички картинки
var imagePieceHolder:MovieClip = new MovieClip();
//Создаем новый кусочек картинки, в который мы будем копировать bitmap data
//из картинки-оригинала.
var imagePiece:Bitmap = new Bitmap();
imagePiece.bitmapData = new BitmapData(IMAGE_PIECE_WIDTH,IMAGE_PIECE_HEIGHT);
//Копируем прямоугольную область из картинки-оригинала в наш кусочек картинки.
//Мы устанавливаем точку прямоугольника в (1,1) , таким образом мы получим белые контуры
//вокруг кусочков картинки. Мы будем копировать области колонку за колонкой (вы можете
//изменить это в циклах).
imagePiece.bitmapData.copyPixels(imageTextureMap,
new Rectangle(i * IMAGE_PIECE_WIDTH, j * IMAGE_PIECE_HEIGHT,
IMAGE_PIECE_WIDTH, IMAGE_PIECE_HEIGHT),
new Point(1,1));
//Добавляем кусок картинки в контейнер картинки
imagePieceHolder.addChild(imagePiece);
//Позиция контейнера картинки на сцене.
//Мы располагаем контейнеры так, что он выглядит как картинка-оригинал.
imagePieceHolder.x = i * IMAGE_PIECE_WIDTH;
imagePieceHolder.y = j * IMAGE_PIECE_HEIGHT;
//Запоминаем оригинальную позицию контейнера (нам понадобится это позже для анимации)
imagePieceHolder.origX = imagePieceHolder.x;
imagePieceHolder.origY = imagePieceHolder.y;
//Слушаем, когда мышь располагается сверху куска картинки
imagePieceHolder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
//Добавляем контейнер куска картинки на сцену
addChild(imagePieceHolder);
//Изменяем счетчик кусочков картинки
imagePieces++;
}
}
}
//Эта функция вызывается, когда мышь проходит над контейнером куска картинки
function mouseOverHandler(e:Event):void {
//Сохраняем контейнер в локальную переменную
var imagePieceHolder = (MovieClip)(e.target);
//Вычисляем рандомно координаты target для контейнера
var randomX = Math.random() * 1000 - 500;
var randomY = Math.random() * 1000 - 500;
var targetX = imagePieceHolder.x + randomX;
var targetY = imagePieceHolder.y + randomY;
//Твин контейнера к рандомным координатам, используя TweenLite.
//Мы будем вызывать функцию "outTweenFinished()" когда анимация закончится.
TweenLite.to(imagePieceHolder, 1, {x:targetX, y:targetY, onComplete:outTweenFinished, onCompleteParams:[imagePieceHolder]});
//Добавляем контейнер вверх списка display.
//Это метод, чтобы прямоугольники перекрывали друг друга корректно.
setChildIndex(imagePieceHolder,imagePieces - 1);
//Удаляем слушатель для обработчика MOUSE_OVER
imagePieceHolder.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
}
//Эта функция вызывается, когда контейнер закончил твин
function outTweenFinished(imagePieceHolder:MovieClip):void {
//Получаем оригинальные координаты контейнера
var origX = imagePieceHolder.origX;
var origY = imagePieceHolder.origY;
//Эта функция выполняется, когда контейнер возвращается к оригинальному положению
function inTweenFinished(imagePieceHolder:MovieClip):void {
//Мы можем начать снова слушать событие MOUSE_OVER
imagePieceHolder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
}
[661x794] [800x471] [800x671] [800x739] [525x755]
Все! Флешка на нашем компьютере в созданной папке.
А как с компьютера флешку загрузить в дневник, читаем ЗДЕСЬ
После того, как вы все сделаете, вставляем код в дневник в простом редакторе [484x327]
Надеюсь, вам все было понятно. С нетерпением жду ваших работ. Удачи!!!