В этом уроке мы будем использовать анимацию на временной шкале для создания собственного класса. Затем мы будем использовать класс для двух разных и разных фрагментов ролика, эффективно дублируя анимацию для этих символов.
Краткий обзор
Одной из новых функций Flash CS3, наряду с ActionScript 3, стала возможность копировать анимацию временной шкалы в виде кода AS3. В этом уроке мы создадим собственный класс, который можно будет использовать с любым выбранным вами видеоклипом. Получающийся класс в основном основан на XML и не является чем-то, что вы хотели бы написать вручную — ну, если вы не готовы к тяжелой работе и разочарованию!
В приведенном выше примере SWF мы только растем и замираем мувиклипы, но у вас может быть очень сложная анимация, и она также будет копироваться в ActionScript. Лучшее, что можно сделать при копировании анимации временной шкалы в класс, — это возможность многократного использования. Вы можете видеть, что два символа следуют точно такой же схеме анимации.
Шаг 1: Настройка документа
Откройте новый документ Flash и установите следующие свойства
- Размер документа: 400x200px
- Цвет фона: #FFFFFF
Шаг 2. Настройка мувиклипа
На панели инструментов выберите овальный инструмент и нарисуйте зеленый круг на сцене. Вы можете удерживать клавишу Shift при перетаскивании круга, чтобы форма соответствовала кругу, а не расширенному эллипсу.
На панели «Свойства» задайте круг следующих размеров
- Вт: 27.00
- H 27.00
Щелкните правой кнопкой мыши на круге, который вы только что создали, и выберите «Преобразовать в символ». Введите кружок в качестве имени и убедитесь, что тип установлен на Movie Clip .
Шаг 3: Добавление анимации в мувиклип
На временной шкале щелкните правой кнопкой мыши кадр 60 и выберите «Вставить ключевой кадр».
Убедитесь, что вы все еще на 60 кадре, и на панели инструментов используйте инструмент «Свободное преобразование», чтобы перетащить круг примерно в два раза к его первоначальному размеру.
Убедитесь, что вы все еще на 60 кадре в круге MovieClip. На панели «Свойства» выберите «Цветовой эффект». В раскрывающемся меню «Стиль» выберите «Альфа» и установите его на 0%.
Нажмите на слой, на котором находится круг, чтобы убедиться, что все рамки выделены. Кроме того, вы можете щелкнуть первый кадр, а затем нажать Shift и последний кадр, чтобы убедиться, что все кадры выделены. Затем щелкните правой кнопкой мыши в любом месте между выделенными кадрами и выберите «Создать классическую анимацию».
Теперь вы можете проверить анимацию, перейдя в Меню> Управление> Воспроизвести . Вы должны иметь растущий и исчезающий MovieClip.
Шаг 4: Копирование анимации
Теперь мы готовы скопировать анимацию временной шкалы и кодировать наш класс.
Убедитесь, что все кадры выделены, используя технику выше. Затем щелкните правой кнопкой мыши анимацию на временной шкале и выберите «Копировать движение как ActionScript 3.0». В появившейся подсказке присвойте ему имя экземпляра «GrowFade»
Скопируйте код, который появляется в вашем буфере обмена.
Шаг 5: Кодирование класса
Создайте новый файл ActionScript. Для этого перейдите в « Меню»> «Файл»> «Создать» и выберите « Файл ActionScript» .
Добавьте следующий код в новый файл AS:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
package {
import flash.display.MovieClip;
import fl.motion.Animator;
public class GrowFade extends MovieClip {
var GrowFade_animator:Animator;
public function GrowFade() {
// constructor code
}
public function growAndFade():void {
}
}
}
|
Здесь мы открываем наш пакет и делаем импорт. Класс Animator — это то, что используется для анимации в нашем классе. Функция growAndFade()
— это место, куда мы вставим скопированный код ActionScript, описанный выше. Мы делаем это дальше.
Внутри функции growAndFade()
вставьте код ActionScript. Если вам нужно скопировать его снова, просто следуйте инструкциям выше и убедитесь, что вы дали ему имя экземпляра «GrowFade».
Функция growAndFade
теперь должна выглядеть примерно так
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package {
public function growAndFade():void{
import fl.motion.Animator;
var GrowFade_xml:XML = <Motion duration=»60″ xmlns=»fl.motion.*» xmlns:geom=»flash.geom.*» xmlns:filters=»flash.filters.*»>
<source>
<Source frameRate=»24″ x=»167.5″ y=»116.5″ scaleX=»1″ scaleY=»1″ rotation=»0″ elementType=»movie clip» symbolName=»circle»>
<dimensions>
<geom:Rectangle left=»0″ top=»0″ width=»27″ height=»27″/>
</dimensions>
<transformationPoint>
<geom:Point x=»0.5″ y=»0.5″/>
</transformationPoint>
</Source>
</source>
<Keyframe index=»0″ tweenSnap=»true»>
<tweens>
<SimpleEase ease=»0″/>
</tweens>
</Keyframe>
<Keyframe index=»59″ tweenSnap=»true» scaleX=»2.407″ scaleY=»2.63″>
<color>
<Color alphaMultiplier=»0″/>
</color>
<tweens>
<SimpleEase ease=»0″/>
</tweens>
</Keyframe>
</Motion>;
var GrowFade_animator:Animator = new Animator(GrowFade_xml, GrowFade);
GrowFade_animator.play();
}
|
Нам нужно выполнить некоторые работы по очистке этого.
Сначала нам нужно удалить оператор import, так как мы уже сделали это в начале класса.
Далее мы хотим объявить GrowFade_animator
как локальную переменную для класса, поэтому мы переместим его в начало и growAndFade
его экземпляр в функции growAndFade
следующим образом: GrowFade_animator = new Animator(GrowFade_xml, this)
Возможно, вы заметили, что мы также изменили второй параметр на this
. Причина, по которой мы это сделали, заключается в том, что мы можем использовать этот класс в любом MovieClip; если бы мы не изменили его на this
то только классы с именем экземпляра «GrowFade» могли бы использовать этот класс.
Вот полный класс с новыми изменениями и одним небольшим дополнением. Мы обсудим это дополнение позже.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package {
import flash.display.MovieClip;
import fl.motion.Animator;
public class GrowFade extends MovieClip {
var GrowFade_animator:Animator
public function GrowFade() {
// constructor code
}
public function growAndFade():void{
import fl.motion.Animator;
var GrowFade_xml:XML = <Motion duration=»60″ xmlns=»fl.motion.*» xmlns:geom=»flash.geom.*» xmlns:filters=»flash.filters.*»>
<source>
<Source frameRate=»24″ x=»167.5″ y=»116.5″ scaleX=»1″ scaleY=»1″ rotation=»0″ elementType=»movie clip» symbolName=»circle»>
<dimensions>
<geom:Rectangle left=»0″ top=»0″ width=»27″ height=»27″/>
</dimensions>
<transformationPoint>
<geom:Point x=»0.5″ y=»0.5″/>
</transformationPoint>
</Source>
</source>
<Keyframe index=»0″ tweenSnap=»true»>
<tweens>
<SimpleEase ease=»0″/>
</tweens>
</Keyframe>
<Keyframe index=»59″ tweenSnap=»true» scaleX=»2.407″ scaleY=»2.63″>
<color>
<Color alphaMultiplier=»0″/>
</color>
<tweens>
<SimpleEase ease=»0″/>
</tweens>
</Keyframe>
</Motion>;
GrowFade_animator = new Animator(GrowFade_xml,this);
GrowFade_animator.play();
//How many times to repeat the animation 0= forever
GrowFade_animator.repeatCount =0;
}
}
}
|
Вы заметите, что мы добавили свойство repeatCount
. Установка этого параметра указывает, сколько раз повторить анимацию. Установка его на ноль означает, что он будет повторяться вечно.
Шаг 6: настройка мувиклипов
Вернитесь в FLA, удалите круг со сцены и удалите все кадры из временной шкалы.
В библиотеке щелкните правой кнопкой мыши по кругу мувиклипа и выберите «Свойства».
Дайте окружности имя класса «Круг» и установите для базового класса «GrowFade»; поскольку класс GrowFade расширяет MovieClip, мы можем использовать его в качестве базового класса круга. Мы не создали класс Circle, но поскольку мы ввели GrowFade в качестве базового класса, Flash автоматически создаст класс для Circle, extends GrowFade
, при создании SWF. Таким образом, мы можем использовать столько видеоклипов, сколько захотим, и все они совместно используют класс GrowFade.
Затем нарисуйте синий прямоугольник на сцене.
На панели «Свойства» задайте этому прямоугольнику следующие свойства:
- W: 83,00
- H: 30:00
Щелкните правой кнопкой мыши на прямоугольнике и выберите «Преобразовать в символ»; дать ему имя квадрат .
Удалите прямоугольник со сцены. В библиотеке щелкните правой кнопкой мыши по квадратному мувиклипу. Выберите «Свойства» и дайте ему имя класса «Квадрат» и установите для базового класса «GrowFade», как мы делали с кружком выше.
Шаг 6: применение класса к видеоклипам
Создайте новый файл ActionScript и добавьте в него следующий код:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
var circle:Circle;
var square:Square;
public function Main() {
circle = new Circle();
circle.x = 50
circle.y = 50;
addChild(circle);
circle.growAndFade();
square = new Square;
square.x = 200;
square.y = 50;
addChild(square);
square.growAndFade();
}
}
}
|
Поскольку мы устанавливаем базовый класс круга и квадрата в GrowFade, мы можем вызвать для growAndFade()
метод growAndFade()
.
Установите класс документа фильма в Main и протестируйте фильм. У вас должно быть два отдельных фрагмента ролика, использующих одну и ту же анимацию GrowAndFade.
Вывод
Возможность копировать анимацию на временной шкале — отличное дополнение к Flash. Независимо от того, насколько сложна анимация, которую вы придумали, Flash может с ней справиться, а возможность совместно использовать одну и ту же анимацию для множества различных видеоклипов значительно экономит время.
Надеюсь, вам понравился этот урок, спасибо за чтение!