是否可以使用 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
}
}
}