为什么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学习笔记(一)基础知识相关推荐

  1. php基础教学笔记,php学习笔记:基础知识

    php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...

  2. 【学习笔记--FMCW基础知识】

    学习笔记--FMCW基础知识 前言 mmWave测距原理 mmWave区分多个物体 mmWave的距离分辨率(Range Solution) mmWave的最大测量距离 前言 由于工作原因需要了解TI ...

  3. HTML5学习笔记 —— JavaScript基础知识

    HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...

  4. SAS学习笔记1——基础知识(库、PDV、变量选择、观测值排序、创建新变量

    SAS学习笔记1--基础知识 1.逻辑库.临时库.永久库 2.数据步 2.1数据步语法 2.2 数据步的编译和执行过程 2.3变量的选择 2.3.1 keep和drop语句 2.4变量的重命名rena ...

  5. JS学习笔记——入门基础知识总结

    JS入门基础知识总结1 前言 基础背景知识 一.产生历史: 二.特点: 三.应用方向: 四.Javascript组成: JavaScript书写使用方式 一.行内式(了解即可,项目中不使用,日常练习尽 ...

  6. 《UNIX 环境高级编程》学习笔记——UNIX 基础知识

    UNIX环境高级编程--UNIX 基础知识 引言 UNIX 体系结构 登录 文件和目录 输入和输出 程序和进程 出错处理 用户标识 信号 时间值 系统调用和库函数 引言 所有操作系统都为它们所允许的程 ...

  7. 单片机学习笔记——微机基础知识

    微机基础知识 微处理器,微机和单片机概念 微处理器的组成 一.运算器 主要寄存器 主要寄存器(IR),指令译码器(ID) 程序计数器(PC) 地址寄存器(AR) 二.控制器 存储器和输入输出接口 一. ...

  8. CAN总线学习笔记 | CAN基础知识介绍

    一.CAN协议 1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为 ...

  9. WebGL学习笔记(基础知识篇)

    WEBGL基础知识介绍 1.场景(scene) 场景如其名,即显示3D空间内物体的容器,就好比一个箱子是一个3D场景. 2.坐标系: webgl使用笛卡尔坐标系(宽度.高度和深度),我们也可以指定使用 ...

  10. RocketMQ学习笔记:基础知识和安装启动

    这是本人学习的总结,主要学习资料如下 马士兵教育 rocketMq官方文档 目录 1.架构 2.基本概念 3.安装和启动 3.1.命令行启动 3.1.1.启动Server 3.1.2.启动Broker ...

最新文章

  1. linux去掉java路径_Java显示目录文件列表和删除目录
  2. 计算发送延时与传播延迟_消息队列——延时消息应用解析及实践
  3. 【webservice】Java JAX-WS和JAX-RS webservice
  4. sqlservr.exe占用大量内存
  5. 天锐绿盾加密软件常见问题解决方案
  6. usb转rj45 android,USB转RJ45驱动合集
  7. 小米盒子2刷android tv,【二次搬运】小米盒子3S刷Android TV教程
  8. linux安装pcre错误,安装PCRE时出错
  9. 取消桌面上计算机控制板网络三个系统图标,大神处置win10系统桌面图标“计算机 控制面板 网络”怎么不见了的解决方的步骤...
  10. Mixed Content: The page at 'https://m.ctrip.com/webapp/dingzhi/v3_index' was loa
  11. 我希望逢着一个丁香一样地结着愁怨的姑娘
  12. html页面不能放大缩小,互联网常识:html怎么禁止页面放大缩小
  13. Windows 程序设计作者
  14. hihocoder图像算子(高斯消元)
  15. 一加7T手机如何开启NFC、复制门禁卡等功能
  16. 大龄打工程序员的出路在哪里?
  17. 用JSP/Servlet应用开发一个简单的考试报名系统
  18. mysql的主句与从句_英语语法总结---二、英语中的从句是怎么回事
  19. 10款手机网页模板_手机wap网站模板_html5手机网站模板源码下载(三)
  20. 敏捷基本概念——敏捷思维

热门文章

  1. 测试工程师因迟到和人事大吵一架,结果人事被开除
  2. httprunner接口测试脚本自动生成
  3. html给主题设置背景色,css如何设置元素的背景色?
  4. 编辑器单引号如何不被转码_微信公众号文章内如何插入视频?
  5. od怎么解java打包的exe_关于打包java文件并生成可执行文件的问题
  6. linux 命令 单词,linux常用命令的英文单词缩写
  7. mysql s索引 树_mysql 学习 - B+树索引
  8. java poi无法读取word_poi,word_POI读取word内容的疑问,poi,word,java - phpStudy
  9. Template-Based 3D Model Fitting Using Dual-Domain Relaxation
  10. mexcuda输入nvcc中的参数