AS3学习笔记(一)基础知识
为什么80%的码农都做不了架构师?>>>
ActionScript被ActionScript虚拟机执行,而ActionScript虚拟机是FlashPlayer的一部分。
常用图形处理软件
矢量图形软件IIIustrator;位图图像处理软件Photoshop。
一切面向对象
在Java 中,值类型并不是以对象形式存在的。值类型的变量,存储的不是引用,而是直接容纳了具体的值(Value)。在ActionScript3中则不一样,因为本质上,值类型仍然是对象。值类型是一种特殊的对象,叫做不变对象(immutable object)。一旦虚拟机发现指向一个对象的引用要改变该不变对象的值,就会另行创建一个新的不变对象来接受新的值。
关键字
AS3中定义常量用const,定义变量用var。
Number类型bug:
1.小数相加不一定能得到整数。
比如,我们声明一个变量floatB,初始值为零,让它连加10 次0.1。我们期望得到数值1,但实际上我们得不到,只能得到一个莫名其妙的0.9999999999999999
在编程时避免用这样的算法。如果实在需要浮点数相加得到整数,那么要记得使用Math.round()来修正。
2.不要让数值差距过大的浮点数相加减,结果可能有偏差。
比如,让100 000 000 和0.000 000 001相加。我们期望结果是100 000 000.000 000 001,但实际上结果是100 000 000。无论我们让它们相加多少遍,
结果都是100 000 000。一般来说,只要数值差距不超过十几位,不会有问题。
AS3中的数组:
在ActionScript3中,数组是以非负整数为索引的稀疏数组(sparse array),不支持类型化数组(typed array)。
所谓非类型化数组,意思就是我们并不限制所有盒子都要放同一种类型的数据。所谓稀疏数组,意思就是不要求每个盒子都要装东西,比如我们可以让第1个和第9个装东西,其他留空。
ActionScript3 支持不规则的多维数组。所谓不规则,是指每个维度的子元素数目没必要一致。
强大的Object类:
//写入多个属性,属性名和属性值以“:”号隔开,属性之间以“,”号隔开var foo:Object = {name:"kingda",web:"www.kingda.org"};trace (foo.name);
//直接写入多个方法。这种形式很少用到,在这里只是告诉大家,可以这样运用。格式同上。var bar:Object = {hello:function(){trace ("Hello,guys!");},ok:function():String{return"that’s ok";}};bar.hello();//输出:Hello,guys!
Object 可以动态添加属性。看下例://先初始化,即新建一个空对象,将其引用赋值给变量kingdaVar kingda:Object = {};//新增一个属性name,将字符串“黑羽”赋值给它kingda.name = "黑羽";//新增一个属性gender,将数字1 赋值给它kingda.gender = 1;trace (kingda.name);//输出:黑羽也可以动态添加方法,接上例:kingda.hello = function(){trace("Hi,ActionScript 3")}kingda.hello();//输出:Hi,ActionScript 3
函数
在 ActionScript 3 中可以设置函数的默认参数。如果调用函数时,没有写明参数,那么会调用该参数默认值代替。(scala里有同样的功能,java里无)
function (参数1:类型=默认值,参数2:类型=默认值):返回类型{...}
在函数中传入的参数都被保留在了函数自动生成的一个 arguments 对象中。arguments如同一个数组,按参数定义的顺序保存着传入的参数。可以使
用 arguments[0]、arguments[1]访问传入的第一个参数、第二个参数,依次类推。 它有一个属性 length 表示当前传入参数的数目;还有一个属性 callee 持有指向当前函数的引用,常常用来创建递归。
在 ActionScript 2 中可以无视一个函数的定义,传入任意多的参数。但在 ActionScript 3 中,要严格遵守函数定义,否则就是非法的。为了提供这种传入任意参数的灵活性,ActionScript 3 提供了一个新的关键字...(rest)。只要在参数中定了...(rest),那么就可以接受任意多的参数。这些参数,以数组形式保留在 rest 中。rest 只是推荐的命名,我们可以改成其他的名字,比如 paras。另外要注意,一旦使用了...(rest)关键字, 那么 arguments 就不能再使用了。
函数可以层层嵌套。(scala里函数也可嵌套,java不行)
函数表达式定义法定义函数(scala可以,java不可以)
var aFunc:Function = function() {
trace ("This is bFunc!Excuted!");
}
Java 读者注意:
从语法上区分的话,如果类名前有dynamic 关键字,那么这个类就是动态类;如果没有,那么就是密封类。
强调一点,this 关键字只限于实例属性和实例方法。因为this 关键字必须要指代一个具体的实例,而静态方法和静态属性是不和任何实例相关联的。因此 this 关键字不能用在静态方法中,也不能用来访问静态属性。
internal:包内访问,如果一个类成员前面没有加任何访问控制符,那么将被默认为internal。
protected:不提供包内成员访问,只有子类才能访问。
在ActionScript3 中,只提供了对接口的支持,并没有提供对抽象类的支持。
ActionScript3中接口不可以定义常量。因此,Java 中的常量接口不能实现。
运算符:
1.如果等于运算符(或不等于运算符)两边的基元数据类型不相同,那么会执行类型转换后,再做比较。而全等运算符(===)和等于运算符(==)的不同在于,
全等运算符不执行类型转换。这就意味着,不同类型变量之间的比较用全等运算符一定会返回false。唯一的例外,就是全等运算符对于数值类型一视同仁,所以,
如果int、uint、Number类型数值相同,那么全等运算符也会认为相同。
2.要指出的是,等于运算符和全等运算符对于变量默认值的比较是不同的。当两边运算对象的值都是Number 类型,且值为NaN 时,全等和等于运算符都判断为false。
3.但如果两边运算对象的值是undefined和null时,等于运算符判断为相等,返回true,而全等运算符判断不等,返回false。当运算符一边的运算对象是数值,
另一边运算对象是非数值时:非数值的运算对象会尽量转换成数值,然后再进行数值比较。
4.如果运算符两边的运算对象都是字符串的话,那么将按照从左到右按字母顺序来挨个进行比较。
typeof、is、as
typeof是用字符串形式返回对象的类型。使用方法如下:
trace (typeof 10); //输出:number
is 用来判断一个对象是否属于一种类型。使用格式如下:
trace (9 is Number); //输出:true
as 与is格式一致,内容不同:如果一个对象属于一种类型,那么as返回这个对象;否则返回null。例子:
trace (9 as Number); //输出:9
trace (9 as Array); //输出:null
in 关键字用来判断一个对象是否作为另一个对象的键(Key)或索引,存在返回true,不存在返回false。
var a:Array = ["q","w","e"];
trace(2 in a); //数组a 含有索引2,所以为true
var b:Object = {ary:a, name:"ok"};
trace ("ary" in b); //true,确实有ary为键的属性
在ActionScript3 中,delete 关键字的作用已经大大减少,它只可以来用删除对象的动态实例属性,非动态属性不能删除。
如果要将一个属性所持有的引用删除,将null 赋值给该属性即可。
var b:Object = {ary:"one",name:"ok"};
deleted b; //会报错,不能这样删除了,正确用法 b = null;
deleted b.ary; //成功,因为ary是b对象的动态属性
标签用法
所谓标签用法,其实设计意图简单。就是命名一下各层循环,这个名字就是标签(Label)然后break(或continue)语句后面带上这个标签,不就可以指定break(或continue)那一层循环了吗?就这么简单。
break 标签;
continue 标签;
转载于:https://my.oschina.net/shajin/blog/817313
AS3学习笔记(一)基础知识相关推荐
- php基础教学笔记,php学习笔记:基础知识
php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...
- 【学习笔记--FMCW基础知识】
学习笔记--FMCW基础知识 前言 mmWave测距原理 mmWave区分多个物体 mmWave的距离分辨率(Range Solution) mmWave的最大测量距离 前言 由于工作原因需要了解TI ...
- HTML5学习笔记 —— JavaScript基础知识
HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...
- SAS学习笔记1——基础知识(库、PDV、变量选择、观测值排序、创建新变量
SAS学习笔记1--基础知识 1.逻辑库.临时库.永久库 2.数据步 2.1数据步语法 2.2 数据步的编译和执行过程 2.3变量的选择 2.3.1 keep和drop语句 2.4变量的重命名rena ...
- JS学习笔记——入门基础知识总结
JS入门基础知识总结1 前言 基础背景知识 一.产生历史: 二.特点: 三.应用方向: 四.Javascript组成: JavaScript书写使用方式 一.行内式(了解即可,项目中不使用,日常练习尽 ...
- 《UNIX 环境高级编程》学习笔记——UNIX 基础知识
UNIX环境高级编程--UNIX 基础知识 引言 UNIX 体系结构 登录 文件和目录 输入和输出 程序和进程 出错处理 用户标识 信号 时间值 系统调用和库函数 引言 所有操作系统都为它们所允许的程 ...
- 单片机学习笔记——微机基础知识
微机基础知识 微处理器,微机和单片机概念 微处理器的组成 一.运算器 主要寄存器 主要寄存器(IR),指令译码器(ID) 程序计数器(PC) 地址寄存器(AR) 二.控制器 存储器和输入输出接口 一. ...
- CAN总线学习笔记 | CAN基础知识介绍
一.CAN协议 1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为 ...
- WebGL学习笔记(基础知识篇)
WEBGL基础知识介绍 1.场景(scene) 场景如其名,即显示3D空间内物体的容器,就好比一个箱子是一个3D场景. 2.坐标系: webgl使用笛卡尔坐标系(宽度.高度和深度),我们也可以指定使用 ...
- RocketMQ学习笔记:基础知识和安装启动
这是本人学习的总结,主要学习资料如下 马士兵教育 rocketMq官方文档 目录 1.架构 2.基本概念 3.安装和启动 3.1.命令行启动 3.1.1.启动Server 3.1.2.启动Broker ...
最新文章
- linux去掉java路径_Java显示目录文件列表和删除目录
- 计算发送延时与传播延迟_消息队列——延时消息应用解析及实践
- 【webservice】Java JAX-WS和JAX-RS webservice
- sqlservr.exe占用大量内存
- 天锐绿盾加密软件常见问题解决方案
- usb转rj45 android,USB转RJ45驱动合集
- 小米盒子2刷android tv,【二次搬运】小米盒子3S刷Android TV教程
- linux安装pcre错误,安装PCRE时出错
- 取消桌面上计算机控制板网络三个系统图标,大神处置win10系统桌面图标“计算机 控制面板 网络”怎么不见了的解决方的步骤...
- Mixed Content: The page at 'https://m.ctrip.com/webapp/dingzhi/v3_index' was loa
- 我希望逢着一个丁香一样地结着愁怨的姑娘
- html页面不能放大缩小,互联网常识:html怎么禁止页面放大缩小
- Windows 程序设计作者
- hihocoder图像算子(高斯消元)
- 一加7T手机如何开启NFC、复制门禁卡等功能
- 大龄打工程序员的出路在哪里?
- 用JSP/Servlet应用开发一个简单的考试报名系统
- mysql的主句与从句_英语语法总结---二、英语中的从句是怎么回事
- 10款手机网页模板_手机wap网站模板_html5手机网站模板源码下载(三)
- 敏捷基本概念——敏捷思维
热门文章
- 测试工程师因迟到和人事大吵一架,结果人事被开除
- httprunner接口测试脚本自动生成
- html给主题设置背景色,css如何设置元素的背景色?
- 编辑器单引号如何不被转码_微信公众号文章内如何插入视频?
- od怎么解java打包的exe_关于打包java文件并生成可执行文件的问题
- linux 命令 单词,linux常用命令的英文单词缩写
- mysql s索引 树_mysql 学习 - B+树索引
- java poi无法读取word_poi,word_POI读取word内容的疑问,poi,word,java - phpStudy
- Template-Based 3D Model Fitting Using Dual-Domain Relaxation
- mexcuda输入nvcc中的参数