Экспорт библиотечных символов для ActionScript

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

По умолчанию экземпляры символов фрагментов роликов в библиотеке документа Flash не могут создаваться динамически (то есть только с использованием ActionScript). Это вызвано тем, что каждый символ, экспортированный для использования в ActionScript, увеличивает размер SWF-файла. К тому же, некоторые символы не должны использоваться в рабочей области. По этой причине необходимо указать, что символ должен быть экспортирован для ActionScript, чтобы он стал доступным в ActionScript.

Экспорт символов для ActionScript

  1. Выберите символ на панели «Библиотека» и откройте диалоговое окно «Свойства символа».

  2. При необходимости активируйте дополнительные настройки.

  3. В разделе «Связывание» установите флажок «Экспорт для ActionScript».

    Это активирует поля «Класс» и «Базовый класс».

    По умолчанию поле «Класс» заполняется названием символа без пробелов (например, символ с именем «Tree House» будет преобразован в «TreeHouse»). Чтобы указать, что символ должен использовать поведение пользовательского класса, введите в этом поле полное имя класса, включая пакет. Если требуется создавать экземпляры символа в ActionScript, но не нужно добавлять дополнительное поведение, имя класса можно оставить без изменений.

    Поле «Базовый класс» по умолчанию заполнено значением flash.display.MovieClip . Если требуется, чтобы символ расширял функции другого пользовательского класса, вместо этого значения можно указать имя класса, если он расширяет класс Sprite (или MovieClip).

  4. Нажмите кнопку «ОК», чтобы сохранить изменения.

    Если на этом этапе Flash не может найти связанный SWC-файл или внешний файл ActionScript с определением указанного класса (например, если не требовалось добавлять дополнительное поведение для символа), отображается предупреждение:

    Определение для этого класса не найдено в подкаталоге классов. Оно будет автоматически сгенерировано в SWF-файле при экспорте .

    Это предупреждение можно игнорировать, если библиотечный символ не требует уникальных функций в дополнение к возможностям класса MovieClip.

Если не предоставить для символа класс, Flash автоматически создаст для него класс, эквивалентный этому:

package 
{ 
    import flash.display.MovieClip; 
     
    public class ExampleMovieClip extends MovieClip 
    { 
        public function ExampleMovieClip() 
        { 
        } 
    } 
}

Если требуется добавить для символа дополнительные возможности ActionScript, добавьте соответствующие свойства и методы в приведенную ниже структуру кода. Предположим, что имеется символ фрагмента ролика, содержащий круг с шириной и высотой 50 пикселов, и этот символ должен экспортироваться для ActionScript с классом Circle. При добавлении в файл Circle.as следующий код расширяет класс MovieClip и предоставляет для символа дополнительные методы getArea() и getCircumference() .

package  
{ 
    import flash.display.MovieClip; 
     
    public class Circle extends MovieClip 
    { 
        public function Circle() 
        { 
        } 
         
        public function getArea():Number 
        { 
        // The formula is Pi times the radius squared. 
        return Math.PI * Math.pow((width / 2), 2); 
        } 
         
        public function getCircumference():Number 
        { 
        // The formula is Pi times the diameter. 
        return Math.PI * width; 
        } 
    } 
}

Следующий код, добавленный в ключевой кадр в кадре 1 документа Flash, создаст экземпляр символа и добавит его в список отображения.

var c:Circle = new Circle(); 
addChild(c); 
trace(c.width); 
trace(c.height); 
trace(c.getArea()); 
trace(c.getCircumference());

Этот код демонстрирует создание экземпляров с помощью ActionScript вместо перетаскивания отдельных ресурсов в рабочую область. Код создает круг, который обладает всеми свойствами фрагмента ролика, а также пользовательскими методами, определенными в классе Circle. Это самый простой пример. Библиотечный символ может задавать любое количество свойств и методов в своем классе.

Создание экземпляров на базе ActionScript — это очень мощное средство, так как оно позволяет динамически создавать большое число экземпляров, что было бы утомительно делать вручную. Кроме того, этот метод обеспечивает гибкость, так как в ходе создания каждого экземпляра можно настроить его свойства. Чтобы полностью оценить эти преимущества, можно создать несколько экземпляров Circle с помощью цикла. Используя описанные ранее символ и класс Circle в библиотеке документа Flash, поместите следующий код в ключевой кадр первого кадра.

import flash.geom.ColorTransform; 
 
var totalCircles:uint = 10; 
var i:uint; 
for (i = 0; i < totalCircles; i++) 
{ 
    // Create a new Circle instance. 
    var c:Circle = new Circle(); 
    // Place the new Circle at an x coordinate that will space the circles 
    // evenly across the Stage. 
    c.x = (stage.stageWidth / totalCircles) * i; 
    // Place the Circle instance at the vertical center of the Stage. 
    c.y = stage.stageHeight / 2; 
    // Change the Circle instance to a random color 
    c.transform.colorTransform = getRandomColor(); 
    // Add the Circle instance to the current timeline. 
    addChild(c); 
} 
 
function getRandomColor():ColorTransform 
{ 
    // Generate random values for the red, green, and blue color channels. 
    var red:Number = (Math.random() * 512) - 255; 
    var green:Number = (Math.random() * 512) - 255; 
    var blue:Number = (Math.random() * 512) - 255; 
     
    // Create and return a ColorTransform object with the random colors. 
    return new ColorTransform(1, 1, 1, 1, red, green, blue, 0); 
}

Этот пример демонстрирует, как можно быстро создать и настроить несколько экземпляров символа с помощью кода. Каждый экземпляр размещается на базе текущего счетчика в цикле, и каждому из них присваивается произвольный цвет с помощью свойства transform (унаследованное классом Circle в результате расширения класса MovieClip).