actionScript3.0笔记
- 格式:doc
- 大小:272.50 KB
- 文档页数:50
/*========================*/:以全角星号包围的为本次更新的内容┏━━━━━━━━━━━━━━━━━━┓┃第一部分:ActionScript 3 语言基础┃┗━━━━━━━━━━━━━━━━━━┛================================================第2章ActionScript 3 语言基本元素================================================2.1.2 数据类型概述简单数据类型Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符串)、uint(无符整型)复杂数据类型Array(数组)、Date(日期)、Error(异常)、Function(函数)、RegExp(正则表达)、XML、XMLList2.2.1 变量声明var 变量:类型var 变量:类型= 值;/*============2.2.5 基元数据类型的深入讨论*(此星号为殿堂本身章节标示意为本章属高级内容难度较深建议有经验的人阅读理解) AS3中数据类型可以划分为两种,一种是值类型组成的不变对象(immutable object),一种是数组Object类型的引用类型!所谓的不变对象意思就是忠于地址,而不是忠于引用对象!var a:uint = 1;var b:uint = 0;b = a; //这里把b的值向到a所指向的内存地址;a = 2; //这里不是修改a原来的内存了而是生成一个副本重新赋值为2 并把a指向新内存地址trace(a);trace(b);//直接赋值只会改变地址引用,而后续的对象更改,都是生成新的副本,而非在原有地址上进行数据的修改!!//个人理解就是类似有一个连接池,里面放有很多个变量的副本,声明变量b c d e f 指向等于a的时候,它们共同引用的是一个相同的字符串指向变量a的地址,减少副本的冗余带来的内存重复占用这里bcdef只是一个指代当程序中重复利用一个相同的字符串超过成千上万次的时候,这里只引用一次,效果就特别明显了!!//而当一个内存地址均不被任何变量引用时//比如var a:uint = 1;a = 2;//类似这种单赋值的话,回收计数器引用为0时,内存回收机制会在适当的时候回收原来赋值1时占用的内存空间!!//谢谢天地会群里的朋友补充,类似java中的对象池,创建的对象循环利用,不采用销毁/new 的方法,而多采用init初始化,重复利用!(方便帮助理解这里举了点不一定符合实际的例子但大致是这样的思想!)============*/2.3 声明常量const 常量名:类型= 值;2.4 基础数据类型1.布尔值Boolean(初始化为false)2.数字:int uint Numberint 有符号32位整数-2(31次方) - +(2(31次方)-1)uint 无符号32位整数0 - 2(32次方)-1Number 64位浮点能用整数优先用int uint,有正负之分,用int。
只处理整数,用uint,有小数,用Number。
/*===========2.4.5 数组:ArrayAS3中的数组是以0为起始索引的稀疏数组(sparse array),与C#等语言不同,它们变量及数组声明是type name形式的类型化序列!比如int IntArray[10] ,声明了一个只能放整数的数组里面有10位长度AS3中的数组每位元素没严格要求相同类型,但一般情况下我们使用时均同一时刻只存放相同类型的数据!===========*/2.4.6 Object及关联数组var 对象:Object = new Object()var 对象:Object = {};对象(Object)属动态类,可动态添加任意属性/方法,特别在传参时可以运用Object进行封箱/拆箱处理!var 对象:Object = {键:值,键:值,键:值};对象.键= 值;当键名中包含空格等特殊字符串时,需要使用[]数组运算符的方式进行访问对象["键"] = 值;关于Object的定义可以有几种说法,分别是对象(专指Object的定义) / 关联数组/ 匿名对象/ 对象文本(即单纯使用{}声明的匿名对象)/*===========2.4.7 多维数组AS3中多维数组的实现使用数组元素嵌套数组元件的方法实现多维数组的效用,即:var Arr:Array = [[0,1],[1,3],[4,6]]这种形式的多维数组===========*/2.4.8 Null、NaN、undefined及各自应用对象:变量的默认值数据类型默认值int 0uint 0Number NaNString nullBoolean falseArray nullObject null没声明undefined* undefined/*============除了真正未声明及*类型会显示为undefined外数值类初始值为0String Object Array类初始值为nullBoolean 初始值为falseNumber 初始值为NaN (Not a Number)这里科普一下关于NaN的原理,属于数据结构基础的部分,计算机储存二进制的原理知识:因为计算机存放浮点数时是采用类似4字节byte(4*8=32位)储存一个实数时,会以3byte存放使用标准化指数(即科学记数法的个位数为0表示的小数)表示的底数,包括底数的正负号1byte存放指数,包括正负号二进制概念中1字节(byte)有8位(bit) 底数部分1bit指定正负23bit(即3字节3*8-1=23)储存底数(2的23次方)指数部分1bit指定正负7bit储存指数因为实数初始化时计算机并不清楚最终它是储存整数还是浮点数? 3byte+1byte浮点数或者直接4byte的整数1bit+31bit(2的31次方),所以才会有了NaN这个概念,Number类型数据初始化时是不定值!要判别一个Number类型变量是否为NaN,不能直接用== NaN,要视它为一个布尔量来运算,即:if(!Number变量)因为NaN等同null ,布尔值上为false ,!非一次即true========== */注意:必须声明初值,否则容易出错。
2.5 运算符,表达式及运用2.5.11 typeof、is、astypeof,用字符串返回对象类型,格式:typeof(对象)is ,判断操作符左边的对象是否属于右边的类型,返回值为Boolean,格式:对象is 数据类型as ,判断操作符左边的对象是否属于右边的类型,属于则返回数据,不属于则返回null,格式:对象as 数据类型typeof对象类型与返回结果对照表对象类型返回结果Array objectBoolean booleanFunction functionint numberNumber numberObject objectString stringuint numberXML xmlXMLList xmlArray Object一视同仁为object数值类一视同仁为numberBooleand > booleanString > stringFunction > function2.5.12 inin ,判断操作符左边的对象是否作为右边对象中的键(Key)或索引,返回值为Boolean比如:var a:Array = ["q","w","e"];trace(2 in a); //数组中有索引2,返回truetrace(3 in a); //数组中没有索引3,返回false2.5.13 delete关键字AS2.0中可以删除任意任意对象的delete关键字,在AS3.0中只能用于删除对象的动态实例属性,非动态属性不能删除。
如果要将一个属性所持有的引用删除,使用对象名= null 来进行赋值操作即可。
================================================第3章ActionScript 3 流程控制================================================3.4.5 for...in和for each...infor(var 枚举变量in 枚举集合) //枚举变量返回为集合元素键名for each(var 枚举变量in 枚举集合) //枚举变量返回为集合元素值for...in 和for each均只能遍历动态类的集合3.4.7 break和continue标签的特殊用法在循环语句前用标签: 的形式为循环体赋标签,然后就可以在break和continue语句后加上空格+这个标签,实现控制对应循环的功能。
3.5 AS3.0中switch比较默认使用=== 全等比较,switch条件不会自动执行类型转换,要注意。
================================================第4章ActionScript 3 中的函数及高级使用技巧================================================4.1.1 两种定义函数的方法函数定义式- 函数变量式函数语句定义法- 函数表达式定义法函数定义式用function开头,function 函数名(){}函数变量式用var 变量名= function(){} ,即匿名函数AS编译器会优先执行定义式的函数,而变量式函数则只能先定义,后使用(与变量一样,先定义,后使用)在实现上,使用函数定义式定义的函数,AS3是使用内部实现处理的,而函数语句定义法则是基于动态类的实现,所以函数声明不可以用赋值等号改变指向,而变量式函数定义可以使用赋值等号改变它的引用!!var a:Function = function(){};a = bFunction; //重新指向函数引用对象变量式中this关键字绑定对象定义式中this关键字只绑定场景var num:int = 3;function testThisA(){trace(this.num)//此处输出3}var testThisB:Function = function(){trace(this.num)//此处输出300}var Obj:Object = {num:300};Obj.TestA = testThisAObj.TestB = testThisB4.2 参数4.2.1 按引用传入参数AS3.0中,所有形参均为引用传入方式,只不过,基元数据是不变对象,所以与传值方式效果一样。