AS3和Flex常用知识100条
2019独角兽企业重金招聘Python工程师标准>>>
【改变输出swf的尺度,背景颜色或帧频】
在Navigator窗框里右键你的项目
在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">在"Additional compiler arguments"里输入你所需要的命令
如想改变背景颜色,请输入: -default-background-color 0xffffff
【鼠标坐标】
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
【取消默认的严格编译模式】
在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">取消"Enabel compile-time type checking"选项
【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】
基元数据类型类似按值传递:
var intOne:int = 1;
var intTwo:int = 1;
trace(intOne == intTwo); //true
【复杂数据类型类似按引用传递】
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
【优化逻辑AND(&&)和OR(||)的小知识】
对于逻辑And(&&):
除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.
对于逻辑OR(||):
除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.
总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.
为了理解,我补充一例子,AND的情况: a!=null && a.length>0 ; OR的情况: a==null || a.length==0 //a 的空, 相对于a.length长度是否为0可能性比较大。
【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参数名是自定义的.
}
【错误处理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("抛出错误");
}
【for...in与for each...in的区别】
与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
为了理解,我补充一例子:
for...in: for (var name:String in user) trace(name+": "+user[name]+"; ") //username: ryan; password: 123; 这个循环中的name是user中的每一个属性名。
for each...in: for each(var user:User in users) trace(user+": "+user.username+"; ") //user: ryan; user: bill; user: tom;
【命名包路径的小技巧】
使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果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();
}
}
【确保类是绝不会有子类,使用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
【让其它域的.swf访问本域的.swf】
在本域的.swf文件里加上:flash.system.Security.allowDomain()
或 者使用安全策略文件"crossdomain.xml".在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符 "*":
<?xml version="1.0"?>
<!-- http://www.mydomain.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.google.com" />
<allow-access-from domain="*.google.com" />
<allow-access-from domain="210.32.186.12" />
<allow-access-from domain="*" />
</cross-domain-policy>
【数字的不同进制之间的转换】
parseInt(str:String, radix:uint = 0):Number 返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0":
trace(parseInt("0x12")); //设定radix为16,输出:18
trace(parseInt("017")); //设定radix为8,输出:15
或者使用Number,uint和int对象的toString(radix)方法.
【使用Math.round()对一个数取整,四舍五入】
Math.round()
trace(Math.round(204.499)); //输出:204
trace(Math.round(401.5)); //输出:402
【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】
trace(Math.floor(204.99)); //输出:204
【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】
trace(Math.ceil(401.01)); //输出:402
【产生一个随机数】
使用Math.random()产生一个伪随机数n,其中 0 <= n < 1
【把数字取至最近的小数点位,即指定精确度】
1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;
2. 让输入值除以步骤1所选的数字(此例为0.01);
3. 使用Math.round()把步骤2所计得的值取成最近的整数;
4. 把步骤3所得的结果乘以步骤2用于除法的那个值.
例如,要把90.337取成两个小数点位数,可以使用:
trace(Math.round(90.337/0.01)*0.01); //输出:90.34
【把数字取成一个整数的最接近倍数值】
例1,这样会把92.5取成5的最近倍数值:
trace(Math.round(92.5/5)*5); //输出:95
例2,这样会把92.5取成10的最近倍数值:
trace(Math.round(92.5/10)*10); //输出:90
【在指定数值范围内获得随机数】
//可取范围:[min, max]
private function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
应用例子:
模拟投银币,即希望得到随机布尔值(true 或 false): randRange(0, 1);
模拟投骰子,即希望得到随机六个值: randRange(1, 6);
为避免被缓存而需要产生一个独一无二的数字追加在URL尾端,通常最佳方法是取得当前毫秒数.
【弧度(radian)与度数(degree)之间的转换】
从弧度转为度数: degrees = radians * 180 / Math.PI
从度数转为弧度: radians = degrees * Math.PI / 180
【计算两点之间的距离】
勾股定理: c2 = a2 + b2ler
假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:
var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));
【模拟圆周运动】
已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:
x = x0 + (Math.cos(angle) * r);
y = y0 + (Math.sin(angle) * r);
注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.
【模拟椭圆运动】
已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:
x = x0 + (Math.cos(angle) * a);
y = y0 + (Math.sin(angle) * b);
【华氏温度和摄氏温度之间的转换】
华氏温度 = 摄氏度数 * 9 / 5 + 32
摄氏温度 = (华氏度数 - 32) * 5 /9
【公斤与磅之间的转换】
公斤 = 磅 * 2.2
磅 = 公斤 / 2.2
【向数组尾端添加元素】
var array:Array = new Array();
array.push("a", "b");
//向数组尾端添加单一元素也可以这样:
array[array.length] = "c";
//如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined:
array[5] = "e";
trace(array[4]); //输出: undefined
转载:http://tieba.baidu.com/f?kz=569403190
转载于:https://my.oschina.net/bigyuan/blog/49591
AS3和Flex常用知识100条相关推荐
- Liunx常用的100条命令汇存
1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销2.进入图形界面 startx3.vi编辑器 [vi] ...
- Excel教程实用技巧100条连载一
作者Crystal将在<Excel教程实用技巧>系列中为大家分享财务.人事等工作中Excel数据处理的常用技巧100条.本篇是Excel实用技巧教程系列之一,分享了5条技巧,包括:同时打开 ...
- {电脑救助站}常用知识1 来自常用知识( 网络安全中起重大作用的 Windows 命令)
常用知识( 网络安全中起重大作用的 Windows 命令) 常用在线查毒链接 3 楼 超级兔子的在线检测功能 4楼 准确探索间谍软件或广告软件 5楼 预防间谍软 ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结...
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 四川建院计算机应用考试试题,自考计算机基础知识100题及答案
高等教育自学考试的考试时间慢慢临近,备考复习也越来越紧张,四川自考网蓝优悠教育中心的南充自考助手为大家精心准备了"自考计算机基础知识100题及答案"内容,希望帮助同学们做好自考备考 ...
- Python工程师简历100条技能例句,写简历再也不用愁!!
相信大家在写简历的时候,都有过这种一种困惑,就是不知道该怎么写自己的技能清单,今天我们就给大家提供100条Python工程师简历技能例句,让大家写简历的时候再也不用发愁了. 1.熟悉Flask/Tor ...
- MYSQL数据库常用知识整理
为什么80%的码农都做不了架构师?>>> MYSQL数据库常用知识整理 什么是MYSQL MYSQL的特性 MYSQL存储引擎的分类以及数据文件的介绍 MYSQL赋权 MYSQ ...
- python中pandas格式_Python学习笔记之数据分析中Pandas常用知识
前言 Pandas基于两种数据类型:series与dataframe. 一个series是一个一维的数据类型,其中每一个元素都有一个标签.series类似于Numpy中元素带标签的数组.其中,标签可以 ...
- mysql命令行批量添加数据_mysql命令行批量插入100条数据命令
先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...
最新文章
- 区块链今年,胜过过去十年
- wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
- javaSocket与C通信
- 【Paper】2006_Time-Optimal Control of a Hovering Quad-Rotor Helicopter
- 微服务API模拟框架frock介绍
- 鸿蒙os开发小程序,9岁小学生展示鸿蒙OS开发:这操作太秀了
- jetty java 文件下载_Jetty 嵌入式开发之文件浏览和文件下载
- delphi中webbrowse控件中模拟点击文本超链接_游戏中lt;控件gt;的思考
- C++test对多变参数的函数打桩处理技巧
- 高德地图ios11 定位失败
- P2037 电话号码
- java包是什么意思_java中的“包”到底是什么意思?
- 2017CS231n笔记_S11分割,定位,检测
- 自己动手做Arduino玩具(三)
- 人才补贴,正式取消?
- 融合软泥怪 (优先队列)
- 软件测试经理,高级管理退休后,给我小白指点面试迷津!
- 修改Cisco交换机ntp服务器,Cisco交换机时间服务(NTP)的设置步驟
- STM32 HAL库之IIC
- EntityManager的find()与getReference()的区别
热门文章
- SQL Server 建库,表,约束(一)
- python模块分析之time和datetime模块
- Mysql 5.7 for windows 免安装版(解压版)安装和配置
- Android ImageView点击效果
- sap快捷搜索菜单栏
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- 和吴昊一起玩推理 Round 10 (第一季完结篇) —— 终极推理 —— L与夜神月的对话...
- [转载]Dorado中DataTable使用技巧汇总
- 知识整理2019清北学堂提高储备D1
- 【翻译】什么是最重要的机器学习技术?