免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3228 | 回复: 0
打印 上一主题 下一主题

ActionScript 3 学习笔记(1)2010-01-25 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-25 15:47 |只看该作者 |倒序浏览
ActionScript 3 学习笔记(1)2010-01-25

五个月没有碰ActionScript3。趁这两天工作不是很忙,赶紧补补,然后将它学完。先从基础来吧...

* ActionScript 3中所有的数据都是对象。(Everything is an Object.)
* 数据类型:
    基本数据类型:int(处理整数)、Number(处理很长又有小数点的数字)、uint(处理很大的整数)、Boolean、String.
    复杂的数据类型:Array、Date、Error、Function、RegExp、XML、XMLList。
* 变量的声明:
     var 变量名:数据类型; 或者      var 变量名:数据类型 = 值;
     var是关键字,用来声明变量。
     例如:
        
var g:int;
        var h:int = 1;
        var i; //声明变量i,但是没有指定类型,默认为untype
        var j:*; //声明变量j,untype
        注意: 下面几种是错误的书写方式;
               k; //没有用关键字,即没有声明变量,出错
               l = 100;
* 变量持有引用(Reference),而引用则指向要操作的对象,实际上是通过操作引用来操作对象。
引用的实现机制:每个对象生成时,都会在内存中请求一块空间来保存它的数据,根据对象的大小和类型,他可能需要占用的空间的大小也不相同,访问对象的时候,我们不是访问对象在内存中的数据,而是通过引用去访问,引用也是一种数据类型,可以把它想象为类似C语言中指针,他只是了对象在内容中的地址。
* 值类型与引用类型的区别:
    值类型直接存储值;而引用类型存储引用,指向要操作的对象。ActionScript 3中的值类型有int,Number,uint,String,Boolean。其余的都是应用类型。另外一个特点就是值类型的数据不用new关键字来创建,必须使用new关键字创建的一定不是值类型。
    值类型与引用类型使用上的区别:看例子
    1)值类型的使用
var a:int = 3;
var b:int = a;
b = 9;
trace("a的值是" + a);
trace("b的值是" + b)
        输出结果是:a的值是3
                     b的值是9
         直接存储,每个变量不会因为其他变量的改变而改变。
     2)引用类型的使用:
var a:Array = new Array(1,2,3);
var b:Array = a;
b[0] = 4;
trace("a的值是" + a);
trace("b的值是" + b)
      输出结果: a的值是4,2,3
                b的值是4,2,3
      当操作一个引用数据类型时,并没有直接操作数据,而是在操作引用。
* 在Java中,值类型并不是以对象的形式存储的。值类型的变量,存储的不是引用,而是直接容纳了具体的值;在ActionScript 3中则不一样,因为本质上,值类型仍然是对象。那么即使是值类型仍然是引用,而不是直接持有值,但是值类型是一种特殊的对象,叫做不变对象。正式这种的特殊行为为导致了我们对值类型和引用类型并不相同。
* 使用const声明常量。
  ActionScript 3中新增加了const关键字,用于声明常量。
  如: const i:int = 100;  //创建常量i,值为100
  对用引用类型而言,常量只能保证持有的引用不变,而不能保证引用对象对象本身的状态不发生变化。如:
const foo:Array = [2,3];
var b:Array = foo;
b[1] = 100;
trace(foo);//输出2,100
//说明foo指向的数组内容发生了变化
foo = [2,4];//这里会报错,常量不能被改变。
*字符串的声明方式:
var tempOne:String;       //声明一个String变量,此时未定义,默认为null
var tempTwo:String = "";  //声明一个空的字符床,已经定义
var tempThree:String = new String();       //用包装类来声明,效果同上
var tempFour:String = "abd";               //声明一个内容为abd的字符串
var tempFive:String = new String("abd");   //同上效果相同
var tempSix:String = 'abc';        //也可以使用单引号来声明新字符串
*数组Array的几种声明类型:
var a:Array;               //声明一个数组变量a,为null
var b:Array = [];          //声明一个空数组b,
var c:Array = new Array(); //效果同上
var d:Array = [1,2,3,4];   //直接用[]操作符常见一个数组
var e:Array = new Array(1,2,3,4);  //效果同上
var f:Array = new Array(5);        //声明一个长度为5的空数组
*teypeOf , is , as的使用
    typeOf是用字符串形式返回对象的类型,trace(typeOf 10);//输出:number
    is判断一个对象是否属于一种类型,trace(9 is Number);//输出:true
    如果一个对象属于一种类型,as返回一个对象,否则返回null
      trace(9 as Number);  //输出:9
      trace(9 as Array);   //输出:null
* in
  in关键字用来判断一个对象是否作为另一个对象的键(key)或者索引,存在返回true,不存在返回false。
var a:Array = ["q","w","e"];
trace(2 in a);   //数组中有索引2,输出true
trace(3 in a);   //数组中没有索引3,输出false
var b:Object = {ary:a,name:"ok"};
trace("ary" in b);   //数组中存在以ary为键的属性,输出true
trace("name" in b);  //数组中存在以name为键的属性,输出true
import flash.utils.Dictionary;
var c:Dictionary = new Dictionary();   //建立字典对象
c[a] = "a value";                      //把数组a最为键
c = "b value";                      //把数组b作为键
trace(a in c);                         //输出true
trace(b in c);                         //输出true
* delete 关键字用来删除对象的动态实例属性,非动态属性不能删除
var b:Object = {ary:"one",name:"ok"};
delete b.ary;  //成功,因为ary为b的动态属性
trace(b.ary);  //输出:undefined


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93876/showart_2160017.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP