佚名 向大家分享了AS3及Flex的百条常用知识,其中包含flex as3,as3,as3是什么,as3 api,flash游戏修改器as3等知识点,遇到此问题的同学们可以参考下
【改变输出swf的尺度,背景颜色或帧频】 在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">在"Additional compiler arguments"里输入你所需要的命令 如想改变背景颜色,请输入:
-default-background-color 0xffffff</div>【鼠标坐标】 mouseX mouseY 【检查变量类型并返回布尔值】 is 【检查变量类型并返回类型】 typeof 【检查对象类型并返回该对象】 as 【是数字但不是有效数字问题】
var quantity:Number = 15 - "rabbits"; trace(typeof quantity); //显示: "number" , 但它是NaN (not a number) trace(quantity is Number); //true trace(quantity != NaN); //false //使用isNaN()函数检测: isNaN(quantity); //true //检测变量是否内含有效数字: !isNaN(quantity); //false</div>【取消默认的严格编译模式】 在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">取消"Enabel compile-time type checking"选项 【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】 基元数据类型类似按值传递:
var intOne:int = 1; var intTwo:int = 1; trace(intOne == intTwo); //true</div>【复杂数据类型类似按引用传递】
var arrayOne:Array = new Array("a", "b"); var arrayTwo:Array = arrayOne; trace(arrayOne == arrayTwo); //true //----------------------------------- var arrayOne:Array = new Array("a", "b"); var arrayTwo:Array = new Array("a", "b"); trace(arrayOne == arrayTwo); //false</div>【优化逻辑AND(&&)和OR(||)的小知识】 对于逻辑And(&&): 除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了. 对于逻辑OR(||): 除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真. 总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面. 【Timer类注意事项】 不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒. 【private,protected,internal,public访问权限】 private:只能在类本身内部访问,按惯例,命名私有成员时以下划线"_"开头; protected:可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线"_"开头; internal:可以由类本身或者相同包内的任何类访问; public:可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问. 【一个函数具有未知个数的参数,用arguments对象或"...(rest)"符号访问它的参数】 注意:使用"...(rest)"参数会使 arguments 对象不可用;
private funciton average():void{ trace(arguments.length); //输出参数的个数 // arguments的类型是:object,但可以像访问数组一样去访问它 trace(arguments[1]); //输出第二个参数 } private function average(...argu):void{ trace(argu[1]); //输出第二个参数,argu参数名是自定义的. }</div>【错误处理try,catch,finally】
private function tryError():void{ try { trace("测试开始-try"); throwError(); }catch(errObject:Error) { trace("错误信息:" + errObject.message); trace("测试结束-catch"); return; }finally{ trace("虽然catch里已经有return方法,但位于return方法后面的finally里的代码依然会被执行.其实无论return方法是在try里,还是catch里,finally里的代码始终会被执行"); } trace("前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行"); } private function throwError():void{ throw new Error("抛出错误"); }</div>【for...in与for each...in的区别】 与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引). 【命名包路径的小技巧】 使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果Example Corp(examplecorp.com)写了一些ActionScript3.0类,就会把所有类放在com.examplecorp包内(或者 com.examplecorp的子包内).如此一来,如果英国有另一家Example Corp(examplecorp.co.uk)也写了一些ActionScript3.0类,只要使用包uk.co.examplecorp,就可确保唯一性. 当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内. 按惯例来说,包名称的开头是小写字母. 【隐式的取出方法(getter)和设定方法(setter)】
public function get count():uint { return _count; } public function set count(value:uint):uint { if(value < 100){ _count = value; }else { throw Error(); } }</div>【确保类是绝不会有子类,使用final】 final public class Example{} 【super关键字的使用】 super(); //父类的构造函数,只能在类实例构造函数内部使用 super.propertyName; //调用父类的属性,属性需要声明为public或protected super.methodName(); //调用父类的方法,方法需要声明为public或protected 【建立常数,使用关键字const而不是var】 static public const EXAMPLE:String = "example"; 【检测播放器版本】 flash.system.Capabilities.version 对于8.5版以前的任何Flash Player版本,这种方法都不适用. 【判断客户端系统】 flash.system.Capabilities.os 【检测播放器类型】 flash.system.Capabilities.playerType 可能的值有: "StandAlone",用于独立的 Flash Player "External",用于外部的 Flash Player 或处于测试模式下 "PlugIn",用于 Flash Player 浏览器插件 "ActiveX",用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件 【检测系统语言】 flash.system.Capabilities.language 【判断用户是否启用了IME(输入法编辑器)】 flash.system.IME.enabled 【检测屏幕的分辨率】 flash.system.Capabilities.screenResolutionX flash.system.Capabilities.screenResolutionY 【把弹出窗口居中的算法】 X = (舞台宽/2)-(窗口宽/2) Y = (舞台高/2)-(窗口高/2) 【控制影片配合Player的方式,包括缩放问题】 stage.scaleMode 可供选择值:flash.display.StageScaleMode 【舞台的对齐方式】 stage.align 可供选择值:flash.display.StageAlign 【隐藏Flash Player的右键菜单】 stage.showDefaultContextMenu = false; 【检测系统是否具有音频功能】 flash.system.Capabilities.hasAudio 【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】 flash.system.Capabilities.hasMP3 【检测播放器能 (true) 还是不能 (false) 播放流式视频】 flash.system.Capabilities.hasStreamingVideo 【检测播放器是在支持 (true) 嵌入视频的系统上运行,还是在不支持 (false) 嵌入视频的系统上运行】 flash.system.Capabilities.hasEmbeddedVideo 【检测播放器能 (true) 还是不能 (false) 对视频流(如来自 Web 摄像头的视频流)进行编码】 flash.system.Capabilities.hasVideoEncoder 【显示 Flash Player 中的"安全设置"面板】 flash.system.Security.showSettings(); 可供选择项:flash.system.SecurityPanel