Flex или Actionscript Доступ к содержимому из внешнего SWF-файла Illustrator - PullRequest
3 голосов
/ 13 июля 2011

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

Я пытаюсь получить и изменить цвет символов в моем SWF-файле

var flashMovie:Sprite = this.content as Sprite;
for (var i:int = 0; i < flashMovie.numChildren; i++) 
{                           
flashMovie.getChildAt(i).name;
flashMovie.getChildAt(i).transform.colorTransform.color;                    

}

Нокогда я создаю свой SWF-файл с помощью Illustrator, он ничего не возвращает.

Как я могу получить доступ к содержимому и изменить цвет Illustrator SWF

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Можно ли экспортировать AVM2 (AS 3) SWF с помощью Illustrator? Поправьте меня, если я ошибаюсь, но, насколько я знаю, Illustrator CS5 по-прежнему экспортирует AVM1 (AS 1 & 2) SWF. В проекте AS3 все загруженные фильмы AS2 представлены классом flash.display.AVM1Movie. Этот класс не имеет дочерних цепочек отображения, это просто DisplayObject, показывающий визуализированный клип AVM1. Из этого следует, что вы не можете получить доступ к символам, определенным Illustrator.

Я не совсем уверен, что вы можете использовать метод call () для вызова некоторого метода в AVM1Movie. Можно ли добавить методы AS2 в Illustrator? Вероятно, нет ...

Вы можете экспортировать каждый элемент как отдельный SWF или выбрать другой формат экспорта, например SVG.

package
{
    import flash.display.AVM1Movie;
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.net.URLRequest;
    import flash.utils.describeType;

    public class AIImportDemo extends Sprite
    {
        private var __loader:Loader = new Loader();
        public function AIImportDemo()
        {
            super();
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE
            __loader.contentLoaderInfo.addEventListener(Event.COMPLETE,__onComplete);
            __loader.load(new URLRequest('assets/myAIExport.swf'));
        }
        private function __onComplete($e:Event):void{
            addChild(__loader);
            trace(describeType(__loader.content));
            trace("is MovieClip "+ (__loader.content is MovieClip)); // false   
            trace("is Sprite "+ (__loader.content is Sprite)); // false
            trace("is Shape "+ (__loader.content is Shape)); // false
            trace("is AVM1Movie "+ (__loader.content is AVM1Movie)); // true
            trace("is Display Object "+(__loader.content is DisplayObject)); // true

        }
    }
}
0 голосов
/ 09 июля 2012

Лучше всего скопировать / вставить ваши объекты из Illustrator в Flash CS. Таким образом, векторные объекты могут быть перенесены как объекты Shape AS3. Вы также можете разделить их на разные символы и т.д ...

...