AS3 CookBook学习整理(十一)
1. 遍历字符串中的字符
有两种方法实现:
<1> 直接以char的形式遍历
package {
import flash.display.Sprite;
public class Sample0603 extends Sprite
{
public function Sample0603()
{
var str:String = "what a beautiful girl";
for(var i:int=0;i<str.length;i++)
{
trace(str.charAt(i));
}
}
}
}<2> 先split(""),然后当成一个数组来遍历
这样的好处在于,可以用数组的系列方法来进行字符的排序,删除等处理
package {
import flash.display.Sprite;
public class Sample0603 extends Sprite
{
public function Sample0603()
{
var str:String = "what a beautiful girl";
var arr:Array = str.split("");
//arr.sort(); //可以排序
for(var i:int=0;i<arr.length;i++)
{
if(arr[i]=="u")
{
arr.splice(i,1);
i--;
}
}
trace(arr.join(""));
}
}
}2. 大小写转换
可以利用str.toUpperCase()转换为大写,str.toLowerCase()转换为小写
可以通过ascb的StringUtilities.toInitialCap(str),将整个字符串的第一个字母变成大写,其它全部小写
可以通过ascb的StringUtilities.toTitleCase(str),将每个单词(以空格区分)的首字母大写,其它小写
package {
import ascb.util.StringUtilities;
import flash.display.Sprite;
public class Sample0603 extends Sprite
{
public function Sample0603()
{
var str:String = "What a beautiful Girl!";
trace(str.toLowerCase());//what a beautiful girl!
trace(str.toUpperCase());//WHAT A BEAUTIFUL GIRL!
trace(StringUtilities.toInitialCap(str));//What a beautiful girl!
trace(StringUtilities.toTitleCase(str));//What A Beautiful Girl!
}
}
}3. 去除首尾空格(Trim)
有两种方法:
mx.utils.StringUtil.trim(str)
ascb.util.StringUtilities.trim(str)
4. 反转(reverse)字符串
使用split()方法创建字符数组,然后调用数组的reverse()和join()方法
package {
import flash.display.Sprite;
public class Sample0611 extends Sprite
{
public function Sample0611()
{
var str:String = "God is a girl";
//反转字母
var arr2:Array = str.split("");
arr2.reverse();
trace(arr2.join(""));
//反转单词
var arr:Array = str.split(" ");
arr.reverse();
trace(arr.join(" "));
}
}
}5. 得到字符的Unicode码或ASCII码
String.fromCharCode(...charCodes) -- 得到当前ASCII码对应的字符
str.charCodeAt(index) -- 得到当前索引下字符对应的ASCII码值
package {
import flash.display.Sprite;
public class Sample0611 extends Sprite
{
public function Sample0611()
{
trace(String.fromCharCode(65));//A
trace(String.fromCharCode(97,98,99));//ABC
var str:String = "abc";
trace(str.charCodeAt(0));//97
}
}
}6. 创建一个Date对象
标准构造函数是:
public function Date(yearOrTimevalue:Object, month:Number, date:Number = 1, hour:Number = 0, minute:Number = 0, second:Number = 0, millisecond:Number = 0)
* 如果未传递参数,则赋予Date对象当前客户端日期和时间
* 如果传递一个Number数据类型的参数,则基于自GMT时间1970年1月1日 0:00:000以来的毫秒数+该数字
* 如果传递一个String数据类型的参数,并且该字符串包含一个有效日期,则赋予Date对象此日期和时间,否则返回"Invalid Date"。符合规范的格式如下:
Day Month Date Hours:Minutes:Seconds GMT Year(例如,“Tue Feb 1 00:00:00 GMT-0800 2005”,这与 toString() 一致)
Day Month Date Year Hours:Minutes:Seconds AM/PM(例如,“Tue Feb 1 2005 12:00:00 AM”,这与 toLocaleString() 一致)
Day Month Date Year(例如,“Tue Feb 1 2005”,这与 toDateString() 一致)
Month/Day/Year(例如,“02/01/2005”)
Month/Year(例如,“02/2005”)
package {
import flash.display.Sprite;
public class Sample0616 extends Sprite
{
public function Sample0616()
{
var date:Date = new Date();
trace(date);//Tue Jun 16 14:44:32 GMT+0800 2009
date = new Date(4000);
trace(date);//Thu Jan 1 08:00:04 GMT+0800 1970
date = new Date("02/03/1983");
trace(date);//Thu Feb 3 00:00:00 GMT+0800 1983
}
}
}7. 获取Date对象的信息
可以通过fullYear、month、date、day、hours、minutes等属性得到Date对象的详细信息
ASCB下的DateFormat类封装了星期与月份的名称数组,如DAYS, DAYS_ABBREVIATED, MONTHS, 和MONTHS_ABBREVIATED
PS:和.net不一样,day是返回星期,date返回的才是日期部分。星期日对应的day是0
package {
import ascb.util.DateFormat;
import flash.display.Sprite;
public class Sample0616 extends Sprite
{
public function Sample0616()
{
var date:Date = new Date();
trace(date); //Tue Jun 16 15:25:18 GMT+0800 2009
trace(date.fullYear); //2009
trace(date.month + 1); //6
trace(date.date); //16
trace(date.day); //2
trace(date.hours); //15
trace(date.minutes); //25
trace(date.seconds); //18
trace(date.milliseconds); //毫秒值
trace(DateFormat.DAYS[date.day]); //Tuesday
trace(DateFormat.DAYS_ABBREVIATED[date.day]); //Tues
trace(DateFormat.MONTHS[date.month]); //June
trace(DateFormat.MONTHS_ABBREVIATED[date.month]); //Jun
}
}
}8. 格式化日期和时间
利用ascb.util.DateFormat类的format(date)方法来格式化
package {
import ascb.util.DateFormat;
import flash.display.Sprite;
public class Sample0616 extends Sprite
{
public function Sample0616()
{
var date:Date = new Date();
trace(date);//Tue Jun 16 16:35:29 GMT+0800 2009
trace(new DateFormat("Y").format(date));//2009
trace(new DateFormat("y").format(date));//09
trace(new DateFormat("m").format(date));//06
trace(new DateFormat("d").format(date));//16
trace(new DateFormat("H:i:s").format(date));//16:35:29
trace(new DateFormat("h:i:s").format(date));//04:35:29
trace(new DateFormat("h:i:s a").format(date));//04:35:29 pm
trace(new DateFormat("Y-m-d 'at' h:i:s a").format(date));//2009-06-16 at 04:48:45 pm
}
}
}9. 格式化秒或毫秒为mm:ss格式
使用ascb.util.DateFormat.formatSeconds( ) 或ascb.util.DateFormat.formatMilliseconds( )方法
package {
import ascb.util.DateFormat;
import flash.display.Sprite;
public class Sample0616 extends Sprite
{
public function Sample0616()
{
trace(DateFormat.formatSeconds(301)); //05:01(5分1秒)
trace(DateFormat.formatMilliseconds(68000)); //01:08(1分8秒)
}
}
}10. 创建Sound对象
要载入声音文件到Sound对象上,需要先创建一个包含mp3文件路径的URLRequest对象,然后调用Sound.load()方法来载入,例如:
var _sound:Sound = new Sound();
_sound.load(new URLRequest("song.mp3");
也可以直接将URLRequest传递给Sound类的构造函数,写法更为简捷:
var _sound:Sound = new Sound(new URLRequest("song.mp3"));
注意:
* 如果是以构造函数的形式创建Sound对象,则自动调用Sound对象的load()方法;否则需要自己调用load()方法
* 一旦对某个Sound对象调用了load(),就不能再将另一个声音文件加载到该Sound对象中。若要加载另一个声音文件,请创建新的Sound对象

浙公网安备 33010602011771号