视觉架构类图: EventDispatcher(事件类) ┃ ┃ 根类 DisplayObject(抽象类,不允许实例化,只能实例化子类) ┃ ┃ InteractiveObject(可以交互)━━━━━━ (不可以交互) ┏ Bitmap(位图) - Shape(容器) ┃ ┣ Video(视频) - AVM1Movie(AS1.0 2.0影片)       ┃ ┗ [StaticText(静态文本框)* - MorphShape(形状补间)*] ┃ 有*的为必须在舞台上手动创建 ┃ ┃ DisplayObjectContainer(可以作为容器) ━ (不可以作为容器) [SimpleButton(简单按钮) - TextField(文本框)] ┃ ┃ ┃ Sprite(简单容器,简化版MovieClip) ━━ Stage(舞台) - Loader(加载) ┃ ┃ ┣━━━━━━━━━━━━━ mx.core.FlexSprite - mx.core.UIComponent(Flex) ┃ ┃ ┗━━ MovieClip(影片剪辑)  ┃  ┃  ┗━ mx.flash.UIMovieClip __________________________ 通常我们存取数据有如下几种方式:Array, Object, 自定义类, 比较特殊的还有 Point, Rectangle 等。效率依次为(后面的数字是100万次存取运算平均所需时间): * 自定义类public属性135 | Point140 | Rectangle(x等属性)140 * Array270 * Object500 | 动态类动态属性550 * Rectangle(left等属性)700 * 自定义类getter/setter1000 | 自定义类Function1000 出乎意料,最快的是自定类的public属性,速度是Array的两倍Object的四倍getter/setter的八倍——很整的倍数关系。另外存取坐标要用Point和Rectangle,比Array快的多。Object还是少用吧,多用自定义类。 另外自定义密封类(sealed,默认)和自定义动态类(dynamic)的public属性、getter/setter速度几乎一样,而动态类动态添加的属性和Object相若。(感谢黑羽提醒) __________________________ this.loaderInfo.url this.loaderInfo.parameters url路径传入变量,flashvars传入变量 js传人中文字符使用UTF-8编码 encodeURI as3解码 decodeURI(root.loaderInfo.parameters["fvbtn"]) as3内请求中文路径内容先使用 encodeURI 编码 __________________________ 调试使用 flash.utils.describeType 生成描述 ActionScript 对象(命名为方法的参数)的 XML 对象 __________________________ 错误:1180: 调用的方法 addFrameScript 可能未定义。 解决:时间轴添加了代码 __________________________ 【不缩放、左上角对齐、屏蔽右键菜单】 stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.showDefaultContextMenu = false; __________________________ as2中_root为 this["root"].gotoAndPlay() MovieClip(root).gotoAndPlay() 上一级是 this["parent"].gotoAndPlay(); 根下的是 root["mysp"].gotoAndPlay() __________________________ 【PNGEncoder 用法】 import com.adobe.images.PNGEncoder; var txt=new TextField(); txt.autoSize=TextFieldAutoSize.LEFT; txt.text="http://www.n12345.com"; var bitmapData=new BitmapData(txt.width,txt.height,true,0x00FFFFFF);//0x00FFFFFF 透明底,0x00 一样效果 bitmapData.draw(txt); var bytes:ByteArray=PNGEncoder.encode(bitmapData); //jpg //var jpgEncoder:JPGEncoder = new JPGEncoder(85); //var byteArray:ByteArray = jpgEncoder.encode(bitmapData); var fileRef = new flash.net.FileReference(); fileRef.save(bytes, "text.png"); 【GIFEncoder 用法】 import org.bytearray.gif.encoder.GIFEncoder; var txt=new TextField(); txt.autoSize=TextFieldAutoSize.LEFT; txt.text="http://www.n12345.com"; //txt.wordWrap =true; //txt.multiline=true; var bitmapData=new BitmapData(txt.width,txt.height); bitmapData.draw(txt); var myGIFEncoder:GIFEncoder = new GIFEncoder(); myGIFEncoder.start(); myGIFEncoder.setRepeat(1); // 0:loops myGIFEncoder.setDelay (10); // milliseconds myGIFEncoder.addFrame(bitmapData); myGIFEncoder.finish(); var fileReference = new flash.net.FileReference(); fileReference.save(myGIFEncoder.stream, "text.gif"); 【strReverse 实现】 var str="654321" var strArr=str.split(""); trace(strArr.reverse().join("")) //123456 【loadBytes 侦听】通过contentLoaderInfo实现 var reloader:Loader = new Loader(); reloader.loadBytes(loadByteArray); reloader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void { var loader:Loader = Loader(e.target.loader); var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo); var bitmapData=new BitmapData(info.width,info.height,true,0x00FFFFFF); bitmapData.draw(info.content); } ) 【本地保存图片】 import flash.net.FileReference; var fileReference = new FileReference(); fileReference.save(pngByteArray, "file.png"); 【Base64】 import com.dynamicflash.util.Base64; trace(Base64.encode("中国")) trace(Base64.decode("5Lit5Zu9")) 【按钮写法】 my_btn.addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler(event:MouseEvent) { var button:Button = event.target as Button; trace(button.label); } 【eval实现】 //方法一:类里面被调用的函数是 public 属性 public function func():void {} public function main(){ var functionName:String = "func"; if (this.hasOwnProperty(functionName)){ this[functionName]() } } //方法一:用反射实现eval import flash.utils.getDefinitionByName; var classReference:Class = getDefinitionByName("flash.text.TextField") as Class; var instance:Object = new classReference(); 【dispatchEvent】 package { import flash.display.*; public var COMPLETE:String = "complete"; public class Template extends Sprite{ public function Template(){ dispatchEvent(new Event(COMPLETE)); } } } // var template:Template=new Template() template.addEventListener(template.COMPLETE, completeHandler); function completeHandler(event:Event):void{} 【zip编码】 import org.aszip.zip.ASZip; import org.aszip.compression.CompressionMethod; import org.aszip.saving.Method; var myZip:ASZip = new ASZip(CompressionMethod.GZIP); var txt:ByteArray = new ByteArray(); txt.writeUTFBytes("Hello there!"); myZip.addDirectory ("folder/"); myZip.addFile (bytes, "folder/haha.png"); //bytes是读取png的ByteArray myZip.addFile (txt, "folder/read.txt"); myZip.addComment ("I'm comment!"); var myZipStream:ByteArray = myZip.saveZIP(Method.LOCAL); var fileRef = new flash.net.FileReference(); fileRef.save(myZipStream, "pack.zip"); // 相关类: // Fzip: http://codeazur.com.br/lab/fzip/ // nochump-ziplib: http://www.nochump.com/blog/?p=15 // ASZip: http://code.google.com/p/aszip/ 【事件监听传递参数】 var sayHello:String = "how are you"; btn1.addEventListener( MouseEvent.CLICK,function (e:MouseEvent){ clickHandler(e,sayHello) } ) function clickHandler(e:MouseEvent,arg:String):void { trace(e.target + "发出事件(有参数) :" + arg) } 【遮挡鼠标事件解决】 //指定此对象是否接收鼠标消息 flash.display.InteractiveObject.mouseEnabled : Boolean //确定对象的子项是否支持鼠标 flash.display.DisplayObjectContainer.mouseChildren : Boolean 【设置纯色】 import flash.geom.ColorTransform; var ct:ColorTransform = new ColorTransform(); ct.color = 0xff6600; mc.transform.colorTransform = ct; 【swfassist】 var fs = new FillStyle(); fs.color.fromUint(bgcolor); rswf.tags.tags[2].shapes.fillStyles.fillStyles=[fs]; rswf.tags.tags[2].shapes.shapeRecords=myShape.shapeRecords; var sprite = new DefineSprite(); //唯一性 shapeId,spriteId sprite.spriteId=4; wswf.tags.addTag(sprite); var po=new PlaceObject2(); po.depth = 2; po.hasCharacter = true; po.characterId = 4;//可一样spriteId,绑定功能 po.hasMatrix = true; po.matrix.hasScale = true; po.matrix.scaleX=sf_scale; po.matrix.scaleY=sf_scale; po.matrix.translateY=sf_height wswf.tags.addTag(po); 【ABC】 ABC=Actionscript ByteCode 【文字描边】 var txt:TextField = new TextField(); // new TextFormat(font, size, color) txt.defaultTextFormat=new TextFormat("DejaVu Sans",21,0xFFFFFF); txt.antiAliasType=AntiAliasType.ADVANCED; txt.autoSize=TextFieldAutoSize.LEFT; txt.text="The quick brown fox jumps over the lazy dog."; txt.x=5; txt.y=5; // new GlowFilter(color, alpha, blurX, blurY, strength) txt.filters=[new GlowFilter(0x000000,1.0,2,2,4)]; //txt.filters = [new GlowFilter(0x000000, 1.0, 4, 4, 8)]; //加重 addChild(txt);