Цветочный шлейф за курсором.
В этом разделе рассмотрим серию уроков по созданию красивых эффектов
шлейфа за курсором, которые можно применить при создании музыкальных
и поздравительных открыток.
Первый пример:
Для начала нам нужно подготовить изображения цветов, которые мы будем
использовать для шлейфа. Для этого в фотошопе вырежьте рисунок цветка
и сохраните его на прозрачном фоне в формате PNG.
Создадим новый документ на AS2.0 Размеры и цвет фона выбираем на своё
усмотрение. Импортируем изображение нашего цветка в библиотеку программы.
Поместим его на сцену, выделим и преобразуем в муви клип присвоив название
в панели свойств follower. Удалим клип со сцены. В библиотеке щелкаем правой
кнопкой мыши на follower и в открывшемся меню выбираем Свойства, где в чебоксе
Экспорт для Action Script ставим галочку
Создадим новый слой, откроем панель Скриптов и вставим следующий код:
Stage.scaleMode = "noScale"; _root._quality = "BEST"; var grav:Number = 0.1; function move_func() { this._x += this.dX*this._xscale/100; this.dY += _root.grav; this._y += this.dY*this._xscale/100; this._alpha--; if (this._alpha<=0) { this.removeMovieClip(); } } onMouseMove = function () { i = _root.getNextHighestDepth(); varTarget = _root.attachMovie("follower", "follower"+i+"follower", i, {_x:_root._xmouse, _y:_root._ymouse}); varTarget._xscale=varTarget._yscale=25+Math.random()*75 varTarget.dY = -1-Math.random()*1; varTarget.dX = Math.random()*1-Math.random()*1; varTarget.onEnterFrame = move_func; }; |
Протестируем ролик. Для наглядного примера я создал открытку.
Второй пример:
Так же подготовим изображения цветов в формате PNG (лучше 2 или 3)
Создаём новый документ на AS2.0 Импортируем эти рисунки в библиотеку.
Сразу создадим новый символ, нажимая F8 и дадим ему название ball.
Поместим из библиотеки наши рисунки цветов
На временной шкале нажимаем F6 на десятом кадре (создаём ключевой кадр)
и при помощи инструмента Свободное преобразование (клавиша Q) уменьшаем
наши цветы до размера 10х10 или меньше. Создадим второй слой и 11 кадр
сделаем ключевым (F6) откроем панель скриптов и вставим следующий код:
stop (); this.removeMovieClip(); |
На временной шкале у вас должно выглядеть примерно следующее:
Переходим на основную сцену. Щелкаем правой кнопкой в библиотеке
на символ ball и в свойствах прописываем идентификатор ball
(ставим галочку в чебоксе Экспорт для ActionScript)
Создадим новый слой для скрипта и в панели скриптов (F9)
вставим следующий код:
i = 0; onMouseMove = function () { var cur_x = _xmouse; var cur_y = _ymouse; var limit = 2; var min = 10; var max = 60; var alfa = 160; var delta_x = old_x - cur_x; var delta_y = old_y - cur_y; var dist = Math.sqrt(delta_x * delta_x + delta_y * delta_y); old_x = cur_x; old_y = cur_y; if (dist > limit) { ++i; attachMovie("ball", "ball" + i, -510 + i); with (this["ball" + i]) { var ran = Math.random() * max + min; var ran2 = Math.random() * alfa - alfa / 2; _rotation = ran2; _xscale = _yscale = ran; _x = _parent._xmouse; _y = _parent._ymouse; } } }; |
Тестируем ролик. Вот пример этого урока:
Третий пример:
Ещё один красивый пример цветочного шлейфа за курсором.
Создадим новый документ на AS2.0 Поставим 25 кадров в секунду
и вставим новый муви клип (F8) дадим название zwezda и пропишем
идентификатор (ставим галочку в чебоксе "Экспорт для ActionScript")
Поместим в новый клип цветы, заранее подготовленные как в
предыдущих примерах перейдём на основную сцену.
Перетащим клип zwezda на сцену и дадим instanc name "follower"
(без кавычек)
Создадим слой для скрипта и вставим следующий код:
import flash.geom.ColorTransform; Mouse.hide(); follower._visible = false; this.onMouseMove = function() { var d:Number = this.getNextHighestDepth(); var mc:MovieClip = follower.duplicateMovieClip('z'+d, d, {_x:_xmouse, _y:_ymouse, life:100, cacheAsBitmap:true, tr:new ColorTransform(1, 1, 1, 1, 255, 0, 0, 0)}); mc.onEnterFrame = function() { moving(this); }; }; function moving(mc:MovieClip) { mc.life -= 1; mc._xscale = mc._yscale=(400-mc.life*3); mc._rotation += 6; mc.transform.colorTransform = mc.tr; mc.tr.redOffset -= 4; mc.tr.greenOffset += 5; mc.tr.blueOffset += 8; mc.tr.alphaOffset -= 4; if (!mc.life) { delete mc.onEnterFrame; mc.removeMovieClip(); } } |
Тестируем ролик в работе. Смотрите работу этого варианта: