Как назначить свойства мувиклипу во Flash и сделать их доступными во Flex? - PullRequest
1 голос
/ 27 февраля 2011

Ситуация / Вопрос

Вот ситуация.

В Flash Professional у меня есть MovieClip, и у этого клипа есть дети. Допустим, родительский клип - это ночное небо, а дети - разные экземпляры звездного мувиклипа, который анимируется в цикле. Все это сводится к NightSky.swc, который я использую в Flash Builder как часть более крупного проекта.

В Flash Pro я размещаю дочерние клипы с высокой точностью. Оттуда я хочу назначить свойства этим «звездам». Скажем, я хочу назначить "galaxyId" и "isRedGiant", но ( и это ключ ) Я хочу отредактировать эти свойства в Flash Professional и получить их значения во Flex. Как мне это сделать?

Пример

Например, используя Flash Pro, я размещаю 6 звезд на небе, присваиваю им все галактические идентификаторы «MilkyWay» и назначаю 3 из них красными гигантами. Затем я компилирую SWC и перехожу, чтобы согнуть. Во Flex (Flash Builder) у меня есть некоторая логика в следующем виде:

public function showRedPulse():void {
    //psuedo-code just as an example:
    for each Child in the Night Sky
       if Child is in the Milky Way
           and if Child is a Red Giant
               Then, gotoAndPlay("redPulse")
}

Итак, в основном мне нужно получить доступ к свойствам во Flex, но мне нужно установить их во Flash.

Предыдущее решение

Ok. Итак, я делал это около 2 лет в CS4, но в CS5 он очень глючит. Поэтому я ищу новый подход. Ранее я создал класс ActionScript (расширяющий UIMovieClip) и добавил метатег Inspectable в поля, которые мне нужно было видеть во Flash, например:

private var _galaxyId:String;

[Inspectable(name="galaxyId", type=String, defaultValue="MilkyWay")]
public function set galaxyId(value:String):void {
     _galaxyId = value;
}

Тогда, во flash professional, я бы "звездой" использовал класс actionscript в качестве базового класса. Затем я щелкну правой кнопкой мыши на звездочке в библиотеке и отредактирую определение ее компонента, указав на тот же класс. Как только я это сделаю, все проверяемые свойства появятся в Инспекторе компонентов Flash.

Основная информация

Мой предыдущий подход работал прекрасно, годами. Теперь в CS5 он очень глючный, работает только иногда! Я полностью застрял, не могу продвинуться вперед в своем проекте, и я думаю о том, чтобы полностью отказаться от Flash Pro и попробовать вместо этого Flash Catalyst.

Мне просто нужно создать объекты во Flash, которые я могу использовать во Flex (3.6, а не Flex 4). Мне нужны эти объекты Flash, чтобы иметь свойства, которые я могу редактировать во Flash и получать доступ к коду Flex.

Как еще я могу подойти к этому? Это не должно быть так сложно.

Ответы [ 2 ]

1 голос
/ 01 марта 2011

В свойствах символа создайте новый класс для мувиклипа, а затем объявите там свое свойство. Пока вы импортируете swc, Flex будет видеть свойство и быть безопасным для типов.

Там не так много хорошей документации, это лучшее, что я мог найти: http://www.adobe.com/devnet/flash/articles/concept_base_class.html

0 голосов
/ 15 марта 2011

Оказывается, в CS5 есть небольшая ошибка, связанная с использованием компонентов.

Flash CS5 + components as children in UIMovieClips = fail.

Тот же самый файл при сохранении в виде файла CS4 работает с нулевыми изменениями.Ответ "на этот вопрос заключается в том, что предыдущее решение является правильным способом сделать это.Это может занять некоторое время для устранения этой странной ошибки в CS5.Насколько я знаю, Adobe знает об этой проблеме.

...