Статьи

Совет: копирование анимации временной шкалы в класс

В этом уроке мы будем использовать анимацию на временной шкале для создания собственного класса. Затем мы будем использовать класс для двух разных и разных фрагментов ролика, эффективно дублируя анимацию для этих символов.


Одной из новых функций Flash CS3, наряду с ActionScript 3, стала возможность копировать анимацию временной шкалы в виде кода AS3. В этом уроке мы создадим собственный класс, который можно будет использовать с любым выбранным вами видеоклипом. Получающийся класс в основном основан на XML и не является чем-то, что вы хотели бы написать вручную — ну, если вы не готовы к тяжелой работе и разочарованию!

В приведенном выше примере SWF мы только растем и замираем мувиклипы, но у вас может быть очень сложная анимация, и она также будет копироваться в ActionScript. Лучшее, что можно сделать при копировании анимации временной шкалы в класс, — это возможность многократного использования. Вы можете видеть, что два символа следуют точно такой же схеме анимации.


Откройте новый документ Flash и установите следующие свойства

  • Размер документа: 400x200px
  • Цвет фона: #FFFFFF

На панели инструментов выберите овальный инструмент и нарисуйте зеленый круг на сцене. Вы можете удерживать клавишу Shift при перетаскивании круга, чтобы форма соответствовала кругу, а не расширенному эллипсу.

Flash анимация временной шкалы в виде кода AS3

На панели «Свойства» задайте круг следующих размеров

  • Вт: 27.00
  • H 27.00
Flash анимация временной шкалы в виде кода AS3

Щелкните правой кнопкой мыши на круге, который вы только что создали, и выберите «Преобразовать в символ». Введите кружок в качестве имени и убедитесь, что тип установлен на Movie Clip .

Flash анимация временной шкалы в виде кода AS3

На временной шкале щелкните правой кнопкой мыши кадр 60 и выберите «Вставить ключевой кадр».

Flash анимация временной шкалы в виде кода AS3

Убедитесь, что вы все еще на 60 кадре, и на панели инструментов используйте инструмент «Свободное преобразование», чтобы перетащить круг примерно в два раза к его первоначальному размеру.

Flash анимация временной шкалы в виде кода AS3
Flash анимация временной шкалы в виде кода AS3

Убедитесь, что вы все еще на 60 кадре в круге MovieClip. На панели «Свойства» выберите «Цветовой эффект». В раскрывающемся меню «Стиль» выберите «Альфа» и установите его на 0%.

Flash анимация временной шкалы в виде кода AS3

Нажмите на слой, на котором находится круг, чтобы убедиться, что все рамки выделены. Кроме того, вы можете щелкнуть первый кадр, а затем нажать Shift и последний кадр, чтобы убедиться, что все кадры выделены. Затем щелкните правой кнопкой мыши в любом месте между выделенными кадрами и выберите «Создать классическую анимацию».

Теперь вы можете проверить анимацию, перейдя в Меню> Управление> Воспроизвести . Вы должны иметь растущий и исчезающий MovieClip.


Теперь мы готовы скопировать анимацию временной шкалы и кодировать наш класс.

Убедитесь, что все кадры выделены, используя технику выше. Затем щелкните правой кнопкой мыши анимацию на временной шкале и выберите «Копировать движение как ActionScript 3.0». В появившейся подсказке присвойте ему имя экземпляра «GrowFade»

Flash анимация временной шкалы в виде кода AS3

Скопируйте код, который появляется в вашем буфере обмена.


Создайте новый файл ActionScript. Для этого перейдите в « Меню»> «Файл»> «Создать» и выберите « Файл ActionScript» .

Flash анимация временной шкалы в виде кода AS3

Добавьте следующий код в новый файл 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 . Установка этого параметра указывает, сколько раз повторить анимацию. Установка его на ноль означает, что он будет повторяться вечно.


Вернитесь в FLA, удалите круг со сцены и удалите все кадры из временной шкалы.

В библиотеке щелкните правой кнопкой мыши по кругу мувиклипа и выберите «Свойства».

Дайте окружности имя класса «Круг» и установите для базового класса «GrowFade»; поскольку класс GrowFade расширяет MovieClip, мы можем использовать его в качестве базового класса круга. Мы не создали класс Circle, но поскольку мы ввели GrowFade в качестве базового класса, Flash автоматически создаст класс для Circle, extends GrowFade , при создании SWF. Таким образом, мы можем использовать столько видеоклипов, сколько захотим, и все они совместно используют класс GrowFade.

Flash анимация временной шкалы в виде кода AS3

Затем нарисуйте синий прямоугольник на сцене.

На панели «Свойства» задайте этому прямоугольнику следующие свойства:

  • W: 83,00
  • H: 30:00
Flash анимация временной шкалы в виде кода AS3

Щелкните правой кнопкой мыши на прямоугольнике и выберите «Преобразовать в символ»; дать ему имя квадрат .

Удалите прямоугольник со сцены. В библиотеке щелкните правой кнопкой мыши по квадратному мувиклипу. Выберите «Свойства» и дайте ему имя класса «Квадрат» и установите для базового класса «GrowFade», как мы делали с кружком выше.

Flash анимация временной шкалы в виде кода AS3

Создайте новый файл 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 может с ней справиться, а возможность совместно использовать одну и ту же анимацию для множества различных видеоклипов значительно экономит время.

Надеюсь, вам понравился этот урок, спасибо за чтение!