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对象

posted @ 2010-07-15 15:20  CoderWayne  阅读(1021)  评论(0编辑  收藏  举报