Flex或Actionscript从外部Illustrator SWF访问内容

时间:2011-07-12 23:58:25

标签: actionscript flash adobe-illustrator

我在从Illustrator SWF访问内容时遇到问题(我使用Illustrator创建swf,导出I Save图层作为符号)。 当我使用flash创建我的swf文件时,我可以使用此代码访问形状和符号。

我正在尝试获取并更改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;                    

}

但是当我使用Illustrator创建我的swf文件时,它什么也没有返回。

如何访问内容并更改Illustrator SWF的颜色

2 个答案:

答案 0 :(得分:1)

是否可以使用Illustrator导出AVM2(AS 3)swf?如果我错了,请纠正我,但据我所知,Illustrator CS5仍然输出AVM1(AS 1&amp; 2)swf。在AS3项目中,所有加载的AS2电影都由flash.display.AVM1Movie类表示。这个类没有显示链子节点,它只是一个DisplayObject,显示了渲染的AVM1 Clip。由此可见,您无法访问Illustrator定义的任何符号。

我不太确定你是否可以使用call()方法在AVM1Movie中调用某些方法。是否可以在Illustrator中添加AS2方法?可能不是......

您可以将每个元素导出为单个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

        }
    }
}

答案 1 :(得分:0)

最好的办法是将对象从Illustrator复制/粘贴到Flash CS。这样,矢量对象可以作为AS3 Shape对象移植。您也可以将它们拆分为不同的符号等......