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
}
}
}