-
-
- 第一章 AS3语言介绍与开发环境
- 简单的了解了ActionScript 3的发展过程,由1到2到现在的AS3版本的推出,使网络丰富程序应用得以加强。RIA,Rich Internet Application,丰富互联网程序,它公认的有以下的特征:用户体验良好、响应速度快和UI组件丰富。
- AIR:Adobe Intergrated Runtime,实现跨系统运行时的RIA程序。
- AS3在2007年3月27日发布的Flash CS3中首次使用,它有两个部分组成:核心语言和Flash Player API,其中核心语言定义编译语言的基本构建块如语句、表达式、条件、循环和类型。
- AS3的开发工具基本上有Flash创作工具--Flash CS3、MXML语言和AS3相组合的--Adobe Flex Builder以及Flex SDK。我认为在可预见的将来,我只能用Flash CS3,诶,传统工科的孩子啊,还是无法接受纯编程的界面……
- Flash CS3种实现程序的时候代码书写方法有两种:在时间轴的关键帧上写代码;在外面写成单独的AS3类文件再和Flash库文件绑定,或者和fla文件绑定在一起。使用AS3开发程序的时候,不建议把代码写在时间线上。
- 【例】输出“Hello,world”效果两种方案:
- 1,在时间线上写trace("Hello,world");然后在输出面板(F2)上可以看到输出的效果。
- 2,新建first.fla文件和HelloWorld.as的类文件,并将他们放在同一个文件夹中,更新HelloWorld.as文件代码如下:
- package{
- import flash.display.MovieClip;
- public class HelloWorld extends MovieClip{
- public function HelloWorld(){
- trace("Hello,world");
- }
- }
- }
- 然后在first.fla文件属性面板的文档类上输入HelloWorld即可,运行后就会在输出面板上输出Hello,world这句话。所谓的绑定,在操作上就是在“文档类”(Document Class)输入框中输入外部的类文件的相对路径和文件名,而实际执行的,是“function 类文件名(){实际内容}”花括号中的内容,这个以类文件命名的函数称为“构造函数”。
- 一,AS3中数据的本质及重要性
- 1,AS3中的所有的数据都是对象,数据是一切语言的即时,通过变量(Variable)操作对象来实现对数据的操作。一切都是对象(Everything is Object),AS3和Java、Csharp都是面向对象的语言(OOP:Object Oriented Programm),AS3中最核心、最元老的类就是Object类,其他数据类型都是它的子类和子类的衍生类。
- 2,AS3数据类型包括基元数据类型(Primitive Data Type)和复杂数据类型(Complex Data Type),其中基元数据类型包括Boolean、int、uint、Number、String类型;复杂数据类型包括Array、Date、Error、Function、RegExp、XML和XMLList数据类型。
- 二,变量的声明和使用
- 1,声明格式:(var是用来声明变量的关键字)
- var 变量名:数据类型;
- var 变量名:数据类型=值;
- 注意代码标准化,每句之后要加上分号,并且如果不加var关键字,编译会出错,另外如果变量的数据类型为int,却赋予了一个字符串的值,也会出错。
- var i : int = "String Value"; //这句话编译时候会出错。
- 2,变量的命名遵循四条几本原则
- A,尽量使用有含义的英文单词做为变量名;
- B,变量名采用骆驼命名法,例如highLevelFlag
- C,变量命名符合“最小长度&最大信息”的原则
- D,尽量避免变量名中出现数字编号
- 3,值类型和引用类型
- 虽然在AS3中并不这样对数据类型进行分类,但是在很多其他的面向对象编程的语言中都是这样分类的,当我明白了这个之后,我忽然搞懂了以前一直不明白的所谓操作值和操作引用这两点之间的差别。
- 值类型直接存储值,例如Boolean、int、uint、Number、String。引用类型存储引用、指向操作的对象,我的理解就是操作的内存中的地址。值类型不用new关键字来创建,必须用new关键字来创建的一定不是值类型。
- 值类型的特点:直接存值,每个变量的值不因其他变量值的改变而改变。
- var a : int = 3;
- var b : int = a;
- b = 9;
- trace("a的值现在是" + a);
- trace("b的值现在是" + b);
- 这时候a的值是3,b的值是9,就表明操作值类型的变量不会影响到其他未操作过的变量。
- 引用类型,其实就是引用的地址,下面有两段代码,能够看出引用类型其实操作的是数据的地址!
- var a : Array = new Array(1 , 2 , 3);
- var b : Array = a;
- b[0] = 4;
- trace("a的值现在是" + a); //输出的时候a是4,2,3
- trace("b的值现在是" + b); //输出的时候b是4,2,3
- 从这个例子可以看出来,其实内存里面开辟的空间只有一个,a和b都是引用的地址,于是,b中发生变化的含义是b指向的地址中的数据发生变化,那么a肯定也会发生变化的。下面的例子,如果想要不改变a的值,必须在内存中重新开辟一个空间,存放另外的内容。
- var a : Array = new Array(1 , 2 , 3);
- var b : Array = a;
- b = new Array(4 , 5 , 6); //表示开辟新空间
- b[0] = 6;
- trace("a的值现在是" + a); //输出的时候a是1,2,3
- trace("b的值现在是" + b); //输出的时候b是6,5,6
- 从这个例子可以看出来,其实内存里面开辟的空间只有一个,a和b都是引用的地址,于是,b中发生变化的含义是b指向的地址中的数据发生变化,那么a肯定也会发生变化
- 三、常量的使用
- 使用的语法如下:(其中const是关键字,表示声明常量)
- const foo : int = 100;
- 使用方法和声明变量是一样的,但要注意常量持有引用时,注意引用是常量,表示引用的地址不变,但所引用的地址表示的数据可能发生变化。
- const foo : Array = [1 , 2];
- var b : Array = foo;
- b[1] = 100;
- trace(foo); //输出:1,100,说明foo指向的数组内容已经发生变化了。
- foo = [2 , 3]; //这里会报错,常量不能被改变的。
- 四、常用的数据类型
- 1,Boolean,布尔值,有两个值false和true,如果不赋值的话,AS3中则默认为false,AS2中默认为undefined类型。
- 2,int:带符号的32位整型;uint不带符号的32位整型;Number64位浮点型。
- 使用的时候需要记住,有正负之分的,用int;之处理正整数,优先使用uint;处理颜色的时候用unit;碰到或可能碰到小数的时候用Number;当心整型数值的边界;小数相加不一定能够得到整数;不要让数值差距过大的浮点数相加。
- 3,String:字符串数据类型。
- 4,Array:数组类型
-
- 3,String字符串数据类型声明方法
- var stringSample : String = new String(); //用包装类来声明
- var stringSample : String = ""; //声明一个空字符串,但已经定义
- var stringSample : String = "abc"; //声明一个内容为abc的字符串
- var stringSample : String = new String("abc"); //同上
- var stringSample : String = 'abc'; //使用单引号来声明新字符串
- 4,Array数组数据类型及其声明方法
- 数组类型是以非零整数为索引的稀疏数组(sparse array),不支持类型化数据(typed array)。数组最多可以容纳4294967295(2的32次方减1)个元素。稀疏数组指不要求每个元素都有内容,非类型数组指并不限制数组中必须放同一类型的元素。数组中装的不是数据对象本身,而是指向数据的引用。声明方法如下
- var a : Array ; //声明数组a,但a没有指向,trace后得到null
- var b : Array = []; //声明空数组b,trace得到空白显示,而不是null
- var c : Array = new Array(); //同上
- var d : Array = [1 , 2 , 3 , 4]; //直接使用数组运算符,建立数组
- var e : Array = new Array(1,2,3,4); //使用Array类进行和d一样的操作
- var e : Array = new Array(5); //声明一个长度为5的空数组
- 5,Object对象类型及关联数组
- Object(对象)是AS3中所有数据结构的基石,它通过字符串来访问其成员(也就是说通过成员名称来访问,这点和数组不同,数组用非负整数访问)。Object的成员有两种,一种是属性(Property),用来存放各种数据;一种是方法(Method),用于存放函数。
- 声明一个新的Object对象的方法
- var orangec : Object = new Object(); //使用构造函数生成名为orangec的Object
- var orangec : Object = {}; //使用大括号是new Object()的快捷方式
- 可以为对象写入属性,其中属性和属性名之间用“:”隔开,属性和属性之间用“,”隔开
- var orangec : Object = {
- name : " 优质鲜澄多 ", //注意这是逗号,不同属性见用逗号隔开!!
- web : " 低调的盼望 " //此处不需要加逗号,因为没有其他属性了。
- }; //声明的格式后一定要加分号
- trace ( orangec.name); //点语法调用属性,输出:优质鲜澄多
- 为对象写入方法,同上。
- var orangec : Object ={
- hello : function() {
- trace("Hello!");
- }, //注意这个逗号
- ok : function() : String { (return "Good!");}
- };
- orangec.hello(); //这里输出Hello!
- trace ( orangec.ok ); //这里输出Good!
- 可以动态的为Object添加属性和方法,如下
- var orange : Object = {};
- orangec.name = "优质鲜澄多";
- orangec.web = "低调的盼望";
- orangec.hello = function (){
- trace("Hello!");
- }
- trace(orangec.name); //输出优质鲜澄多
- orangec.hello; //输出Hello
- 当已知成员名称时,可以通过点语法来添加或者访问属性,若在程序运行过程中访问的话,则必须使用“[ ]”数组运算符。如
- var orangec : Object = {};
- var now : Data = new Data();
- var property : String;
- trace ( now.getTime()); //输出当前时间。
- if ( (now.getTime()%2)==0){
- property = " 名字 ";
- }else{
- property = "name";
- }
- orangec[property] = "优质鲜澄多"; //此处表示设定属性值
- for (var i in orangec){
- trace("现在的属性名是:" + i + "当前的属性值是:"+orangec[i]);
- } //输出:当前属性名:名字 当前属性值:优质鲜澄多
- 通过数组运算符的方式可以实现Object和数组的关联
- 6,多分工作外,我有个习惯——收集容器,这非职业习惯,而是生活习惯或者说爱好。爱好是种盲目的人生态度,可能生活的客观数组。
- 多分工作外,我有个习惯——收集容器,这非职业习惯,而是生活习惯或者说爱好。爱好是种盲目的人生态度,可能生活的客观数组也叫做嵌套数组,有三种方法创建:中括号嵌套创建、构造函数创建、先父后子顺序创建,如下:
- //中括号嵌套创建
- var samplea : Array = [[1,2,3],[4,5,6],[7,8,9]];
- trace(samplea[2]); //输出的是7,8,9
- trace(samplea[2][1]); //输出是8
- //构造函数创建
- var sampleb : Array = new Array(new Array(1,2,3), new Array(4,5,6),new Array(7,8,9));
- trace(sampleb[2][1]); //输出是8
- //先父后子顺序创建
- var samplec : Array = new Array(3);
- samplec[0] = [1,2,3];
- samplec[1] = [4,5,6];
- samplec[2] = [7,8,9];
- trace(samplec[2][1]); //输出是8
- 二维数组往往用来表示矩阵或者网格,并且AS3支持不规则的多分工作外,我有个习惯——收集容器,这非职业习惯,而是生活习惯或者说爱好。爱好是种盲目的人生态度,可能生活的客观数组。
- 7,各种类型变量的默认值
- 数据类型 默认值
- int 0
- uint 0
- Number NaN
- String Null
- Boolean false
- Array null
- Object null
- 未声明类型 undefined
- NaN是Not a Number,如果忘了多一个Number型变量初始化,那么这个变量参与的任何数学—收集容器,这非职业习惯,而是生活习惯或者说爱好。爱好是种盲目的人生态度,可能生活的客观环境培养并塑造了它。我算的结果都是NaN。如果将默认值赋给不同类型的,那么会自动转换成被赋值类型的默认值。如var b : Boolean = NaN,那么trace(b)得到的结果是Boolean型的默认是false。
as3学习笔记
最新推荐文章于 2024-07-11 01:21:51 发布