昨天没有玩千斤顶, 也没有跑步. 以至于午睡都睡的不踏实. 老刘同学说,你是不是有些累, 于是我开始想, 那是不是改为One Week One Class? W再变成M,再变成Y, 这样下去, 怕是这一辈子也总结不完了吧. 咬咬牙, 乳沟都可以挤出来, 我还挤不出点时间来? 嘿嘿 . 昨天碰巧需要总结Class, 我看这个类也没啥好总结的. 只有一条:
在ActionScript 3.0 中, 在一个AS文件中, package之外, 仍然可以存在类, 但不可以有任何修饰符, 这些类只能被该AS文件中的类调用.
如:
// ActionScript file package { import flash.display.Sprite; public class ClassExampl extends Sprite { public function ClassExampl() { var classToConstruct:Class; var classInstance:Object; classToConstruct = ClassA; classInstance = new classToConstruct(); trace(classInstance); // [object ClassA] classToConstruct = ClassB; classInstance = new classToConstruct(); trace(classInstance); // [object ClassB] } } }// end fo package class ClassA { } class ClassB { }
Class 类就总结这么多吧. 其实也没啥东西了. 下面是Date类:
这Date类就更简单了, 虽然属性与方法看起来都很多, 但都是非常简单的东西.
主要东西整理下, 等下还得去跑个步, 太晚了让家里人操心不好…..:
public function init():void { var d:Date = new Date(); //2008年11月5号 20:36:49 .TMD都五号了啊,时间过的真快..... trace(d.date); //Date的属性 显示 5 trace(d.getDate()); //返回1~31的Number, 这里显示: 5 trace(d.setDate(20)); //把日期该到20号...现在时间变成了2008年11月20号 20:36:49 会返回new time in milliseconds. 这里显示: 1227184609078 trace(d.getDate()); //20 trace(d.toDateString()); //Thu Nov 20 2008 trace(d.toLocaleDateString());//Thu Nov 20 2008 trace(d.toLocaleString()); //Thu Nov 20 2008 08:36:49 PM 带时间...不是24小时的 trace(d.toString()); //Thu Nov 20 20:36:49 GMT+0800 2008 带时区 trace(d.toTimeString()); //20:36:49 GMT+0800 时间与时区 trace(d.toUTCString()); //Thu Nov 20 12:36:49 2008 UTC }
昨天没有玩千斤顶, 今天也玩不动, 发现今天轮到Boolean了, 比较简单, 咬牙再坚持一下….
Boolean这个类的确很简单. Boolean用于存储逻辑判断的对象, 要么为true, 要么为False.
可以使用构造函数, 全局函数, 直接赋值.来实现. 如:
var flag:Boolean = true;
var flag:Boolean = new Boolean(true);
var flag:Boolean = Boolean(true);
使用给定的参数建立一个Boolean, 如果参数为空, 则该对象被初始化为False. 如果含有参数, 则该方法将按照Boolean()方法的规则将该参数转化并返回一个Boolean. Boolean()函数的转换规则如下:
Input Value | Example | Return Value |
---|---|---|
0 |
Boolean(0) |
false |
NaN |
Boolean(NaN) |
false |
Number (not 0 or NaN ) |
Boolean(4) |
true |
Empty string | Boolean("") |
false |
Non-empty string | Boolean("6") |
true |
null |
Boolean(null) |
false |
undefined |
Boolean(undefined) |
false |
Instance of Object class | Boolean(new Object()) |
true |
No argument | Boolean() |
false |
坦白说每天搞一个类是很累且疲惫的, 今天是玩千斤顶的第二天, 周六, 我突然体味到那些包二奶的爷们们的难处, 多累啊….试想我每天看一个类, 今天是第二把尝试, 都有些扛不住了, 下午逛街回来给娘做了饭, 一起吃完看了会儿电视, 着实扛不住了, 就小憩了半个小时才爬起来看今天的One Day One Class. 假如给我400个女人, 让我One Day One Woman, 我岂不是要累死?
不扯了, 总结下Array类.
. 游标[index]从0开始;
. Array()可以以函数方式被调用
. 可以往Array里存储数字, 字符串, 对象, Array.
. Array是稀疏的, 如果某数组在index为0与5时都包含对象, 但是在0与5之间没有任何值, 则如果调用中间元素时,返回"undefined";
. 传地址, 而非传值. 即: 如果将某数组赋值给另外一个数组, 则该来那个歌数组都指向同一个数组, 修改其中一个, 另外一个也随之修改. 不同于数字与字符串等
. 不要用数组来建立哈希表
. 可以继承Array类, 并 重写,增加方法, 但必须制定该子类为Dynamic类型, 否则将无法使用Sort.
length : uint 返回数组的长度
继承来的我就不说了…..
归归类, 不然就太没有创意了,跟API一模一样….
1. 数组的创建:
var arrayStu_1:Array = new Array(1); //创建一个长度为1的数组. 但如果不赋值, 都是undefined
var arrayStu_2:Array = new Array("arrayStu_2_Index0", "arrayStu_2_Index1"); //创建包含有括号里这俩元素的数组
var arrayStu_3:Array = ["arrayStu_3_Index0", "arrayStu3_Index1"]; //这个更直接一些了, 直接赋值.
2. 数组元素的访问, 增加, 修改, 删除:
访问: array[i], 访问某元素, 如果要访问全部, 使用For循环
增加:
Push(): 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
unshift(): 将一个或多个元素添加到数组的开头,并返回该数组的新长度。
修改: 直接赋值: array[i] = new value;
删除:
Pop(): 删除数组中最后一个元素,并返回该元素的值。
Shift(): 删除数组中第一个元素,并返回该元素。 其余数组元素将从其原始位置 i 移至 i-1。同时该数长度减少一位;
另外:
splice():给数组添加元素以及从数组中删除元素 可以用于增加或删除元素,同时增大或减小数组长度;
3. 长度或index操作:
length:返回array的长度;
indexOf(): 从左向右遍历数组, 遇到符合要求的元素时, 返回该元素index. 如果遍历结束仍未发现符合要求的元素,返回-1;
lastIndexOf(): 与inidexOf()相反, 从右向左寻找要求的元素;
4. 数组的操作
数组的连接: concat(), 数组的连接 如:
arrayStu_2 = arrayStu_2.concat(arrayStu_1);
trace(arrayStu_2.toString()); //显示: arrayStu_2_Index0,arrayStu_2_Index1,——注意这个逗号, 意为后头还有个空的. 因为arrayStu_1只是一个长度为1但没有元素的数组.
数组元素的检测: evey(): 对数组中的每一项执行测试函数,直到获得对指定的函数返回 false
的项。 使用此方法可确定数组中的所有项是否满足某一条件,如具有的值小于某一特定数值。
筛选出符合要求之元素并新建一个数组: filter();
Join():将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。
Map(): 返回一个新数组,其中包含此函数对原始数组中每一项的执行结果。
reverse(): 在当前位置倒转数组。
slice(): 返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。 返回的数组包括 startIndex
元素以及从其开始到 endIndex
元素(但不包括该元素)的所有元素。 如果您没有传递任何参数,则创建原始数组的一个副本。如果两参数均为-1, 则起点或终点为数组的结尾, -1 指的是最后一个元素。
5. 其他操作
Some(), Sort(), SortOn()
Package Top Level
Class public class arguments
Inheritance arguments Inheritance Object
简要介绍[主要是翻译API, 寒]:
一个Arguments类主要用来存储与访问一个函数的参数, 在函数体内, 可以通过本地参数变量来访问Arguments对象.
Arguments对象存储形式为数组, 因此,arguments[i]即代表了第i个参数(前提时有这么多参数….)
相对与之前的ActionScript版本,ActionScript3.0中不再使用Arguments.caller[之前的版本没用过:(], 在3.0中, 如果需要访问调用该参数的函数, 则可以使用arguments.callee.
Public Properties[不知道该咋翻译, 继续寒]:
callee:Function 返回调用该参数的当前函数
length: Number 参数数目[ 即参数作为数组的长度]
举例: [小修改了下API里的例子]
在初始化时运行 ArgumentsExample(1,’ss’);
import flash.display.Sprite; private var count:int = 1; public function ArgumentsExample(i:int, s:String):void { //参数以数组形式存放于arguments中. trace("第一个参数: " + arguments[0] + " 第二个参数: " + arguments[1] + " 共有 " + arguments.length + "个参数."); trace(arguments.callee == this.ArgumentsExample); firstFunction(true); } public function firstFunction(callSecond:Boolean):void { trace(count + ": firstFunction"); if(callSecond) { //调用secondFunction, 参数为firstFunction trace(arguments.callee); } else { trace("CALLS STOPPED"); } } public function secondFunction(caller:Function):void { trace(count + ": secondFunction"); count++; //此时caller即firstFunction, 实际运行为firstFunction(false); caller(false); }
运行结果:
第一个参数: 1 第二个参数: ss 共有 2个参数.
true
1: firstFunction
1: secondFunction
2: firstFunction
CALLS STOPPED
在没有使用ASDoc之前, 我的注释总是乱七八糟, 并且胡说八道. 该讲的没有讲清楚, 废话比代码还多. 自从抱着试试看的态度用了一下ASDoc, 俺决定认真参照公司的代码规范, 认真规范下俺不曾被规范的注释.
ActionScript注释生成工具很多, 但俺们就使用ASDoc.
常用的注释:
@param
@return
@throws
@see
如:
/** * 解析给定的I18N语言字符串, 并通过fieldStringToLocalizationItem将之转换为LocalizationItem对象,放入到ArrayCollection中. * @example 处理里一串I18N语言字符串 * * stringToAC('{zh=简体中文}{zh_tw="繁体中文"}', false); * * @param s:String 待处理的字符串 * @param strict:Boolean 是否采用严格机制来处理, 默认为ture,意为如果字符串不合要求则报错; 可指定为False, 忽略错误,完成操作. * @return 处理完后包含有LocalizationItem的ArrayCollection; 如果制定的字串为NULL,则返回一个空的ArrayCollection; * @throws Error 如果strict为true,在检测到字符串不合要求时会throw Error. * @see #fieldStringToLocalizationItem() */ public static function stringToLocalizationItems(s:String, strict:Boolean = true):ArrayCollection { .... }
[这个文档写的很粗糙] 经过ASDoc生成后的文档如下:
当需要see顶级类中的函数时
@see Array#pop(); (Method)
@see Array#length; (Property)
需要see本类某函数时,如需要see下本类的 fieldStringToLocalizationItem(fieldString:String, strict:Boolean = true)函数, 则:
@see #fieldStringToLocalizationItem().
关于@see的详细介绍: http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_7.html#188433
不足之处就是开发工具对注释的支持实在是不敢恭维.
-source-path, 该path指明了源代码存放的位置
-doc-classes, 需要生成目录的类 , 在使用该变量之前必须已经声明-source-path;
如: asdoc -source-path . -doc-classes comps.GraphingWidget comps.GraphingWidgetTwo 则意味着生成当前目录下,comps\GraphingWidget .as 与comps\GraphingWidgetTwo.as的文档
-doc-sources: 指定某目录, 生成该目录及其子目录下所有.as文件的注释. 可以单独直接使用,也可以配合使用-source-path. 如:
doc-sources E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\workspace\\AIRTest\\com\\insprise
或配合使用:
-doc-sources com\\insprise
-source-path E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\workspace\\AIRTest\\com\\insprise
其他信息基本上都是无关紧要不痛不痒的一看明白.
可参照:http://liguoliang.com/2008/10/280/
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.