как поделиться компонентом в as3

У меня есть специальный компонент (например, MyButton), используемый в нескольких SWF-файлах. Я хотел бы поделиться компонентом во время выполнения, поэтому, как только наш дизайнер изменит визуальный эффект кнопки, нам не нужно публиковать все флэш-файлы, которые используют эту кнопку.

В as2 я могу поместить эту кнопку в файл актива (например, lib.swf) и проверить «экспорт для общего доступа во время выполнения» в свойстве символа. Затем скопируйте кнопку на fla (например, main.swf) и отметьте «импорт для общего ресурса времени выполнения», это отлично работает. Однако в as3, после выполнения вышеизложенного, если я помещу экземпляр кнопки на сцену и изменю его свойство inspectable, я получу ошибку компиляции «1046: Тип не найден или не является константой времени компиляции».

Я поискал в Интернете и нашел этот http://www.kirupa.com/forum/showthread.php?317257-Runtime-Shared-Library-woes. Затем я попробовал подход swc, но похоже, что swc будет скомпилирован в swf, он вообще не разделяется.

  1. общий компонент должен быть поставлен на сцену, потому что весь fla будет изменен нашим дизайнером, пока он ничего не знает о программировании.
  2. мы не можем использовать flex, все операции должны выполняться во Flash CS5.

person Ryan    schedule 04.03.2013    source источник


Ответы (2)


1: Поместите в библиотеку все ваши компоненты в .fla следующим образом: мои fla-имена BrushClip.fla компоненты обернуты MovieClip. и быть ActionScript Linking экспорт в ActionScript Class.

введите описание изображения здесь

2: Файл - Параметры публикации проверьте формат SWC и опубликуйте следующим образом:

введите описание изображения здесь

3: проверьте, создан ли файл swc в вашем проекте. теперь вы можете использовать другой проект swc, который необходимо связать с библиотекой SWC в File-ActionScript Settings-Library Path. а позже, если вы измените дизайн компонентов, повторно опубликуйте. и скопируйте и вставьте файл SWC. автоматически изменится перезагрузка swf файла. BrushClip.swc имеет все компоненты.

введите описание изображения здесь

вы можете получить доступ следующим образом:

var brushClip0:MovieClip = new BrushClip0();
addChild(brushClip0);

var brushClip10:MovieClip = new BrushClip10();
addChild(brushClip10);
person bitmapdata.com    schedule 04.03.2013
comment
запутался на шаге 3. Я не могу использовать скрипт для создания компонента в fla. Я должен скопировать файл SWC в папку конфигурации Adobe, затем найти компонент на панели инструментов компонента (Ctrl + F7) и перетащить его на сцену. потому что макет редактирует наш дизайнер. после создания экземпляра компонента на сцене, компонент будет скопирован в библиотеку fla, а затем опубликован в swf. когда я меняю дизайн компонента, этот swf все еще использует старый стиль. - person Ryan; 04.03.2013
comment
хорошо, я ошибаюсь. необходимо установить ссылку на библиотеку SWC в меню «Файл-Параметры ActionScript-Путь к библиотеке». - person bitmapdata.com; 04.03.2013
comment
ваш код работает. но моя проблема в том, чтобы разместить компонент на сцене без кода. Я хочу использовать компоненты в SWC, как обычные фрагменты роликов в этой библиотеке FLA, перетащить их на сцену и установить положение / размер / имя / альфа во Flash IDE. - person Ryan; 04.03.2013

Я нашел решение.

  1. Дайте спрайту, который содержит импортированные компоненты, класс привязки
  2. Отредактируйте файл класса, объявите компоненты самостоятельно независимо от того, установлен ли флажок «Автообъявление экземпляра на сцене»
person Ryan    schedule 11.03.2013