3

Illustrator SWF からコンテンツにアクセスする際に問題があります (illustrator を使用して swf を作成し、エクスポートしてレイヤーをシンボルとして保存します)。フラッシュを使用して 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 の色を変更するにはどうすればよいですか

4

2 に答える 2

1

Illustrator を使用して AVM2 (AS 3) SWF をエクスポートできますか? 私が間違っている場合は訂正してください。ただし、私の知る限り、Illustrator CS5 はまだ AVM1 (AS 1 & 2) SWF をエクスポートしています。AS3 プロジェクト内では、読み込まれたすべての AS2 ムービーは flash.display.AVM1Movie クラスによって表されます。このクラスにはディスプレイ チェーンの子はなく、レンダリングされた AVM1 クリップを表示する単なる DisplayObject です。このことから、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

        }
    }
}
于 2011-07-13T13:26:12.010 に答える
0

最善の策は、オブジェクトをIllustratorからFlashCSにコピーして貼り付けることです。このようにして、ベクターオブジェクトをAS3シェイプオブジェクトとして移植できます。それらを別のシンボルなどに分割することもできます...

于 2012-07-09T17:08:19.503 に答える