Flex与As3学习笔记之:Part 3 函数参数、字符串处理、日期与时间类型

一、函数

1.1在AS3中,也可以像JS中定义函数表达式,如:

var traceParameter:Function = function(aParam : String)

{ trace(aParam) ; }

调用:traceParameter(“Hello”);

 

1.2按值或按引用传递

在AS3中,基本数据类型是按值传递的,其它对象则按引用传递。以下为例,第一个按值传递,第二个按引用传递:

function passPrimitives(x:int,y:int):void

{  x++; y++; }

function passByRef(obj:Object):void

{ obj.x++; obj.y++;}

 

1.3默认参数

AS3中允许默认参数设置,比如说一个函数有三个参数,我可以指定后面两个参数有默认值,这样,使用时只给其一个参数也能正常调用。所有具有默认值的参数必须放在参数列表的末尾。

例:function dvFun(x:int , y:int=3,z:int=5):void{...}

可以如下调用:dvFun(1)  //y与z则系统自动以3,5去调用。

 

1.4 arguments对象:可以用arguments.call实现递归

在AS3的函数调用中可以允许参数的数量大于函数定义的参数数量,可以为arguments对象的数组也访问传递给函数的任何参数。

arguments是一个数组,arguments.length可以计算传递过来的参数个数,arguments.callee提供对函数本身的引用,该引用可以用于实现递归调用。注:函数在定义时,若参数使用了arguments为变量名,则会覆盖arguments对象。

例:

function traceArgArr(x:int):void

{

  for(var i:uint = 0 ; i < arguments.length; i ++ )

   {

     trace(arguments[i]);

   }

}

traceArgArr(1,2,3);  // 将输出1 2 3

例:AS3中的递归调用:

var factorial:Function = function ( x:uint)

{

  if(x = = 0)

   {

      return 1;

   }

   else

   {

      return (x * arguments.callee (x -1 ) );

    }

}

则:trace( factorial(5) );   // 120

 

1.5 ...参数

与arguments类似,一旦使用它将屏蔽arguments对象,它与arguments不同的是,没有callee功能,以下为例:

function traceArgArray ( ... args):void

 {

   for( var i:uint = 0 ; i < args.length; i + +)

    {

      trace ( args [i] );

    }

  }

traceArgArr(1,2,3); 将输出1 2 3

 

二、字符串处理

AS中的字节符串文本可以用双引号,也可以用引号去申明或定义,这点与JS非常相似,可以在单引号中用双引号字符,也可以在双引号中用单引号字符。

     var str1:String = “Helllo”;

     var str1:String = ‘Hello’;

     var str1:String = new String(); //str1为””

2.1 length属性:与C#不同的是,null.length不会抛出异常,而是为0;

 

2.2 charAt()、charCodeAt()、String.fromCharCode()

用charAt()来返回指定位置(0 到 length-1)上的某个字符,用charCodeAt()来返回指定位置上字符的Unicode字符代码。

charAt返回的是String,若index 超标,则返回空字符串

charCodeAt返回的是Number,若index超标则返回NaN

例:trace(“h”.charAt(0), “-“ , “h”.charCodeAt(0) );  // h – 104

在定义字符串时,可用Unicode来生成,如

var myStr:String = String.fromCharCode(104,101,108,108,111); // myStr为”Hello”

 

2.3 toLowerCase()与toUpperCase():大小写之间转换字符串

 

2.4 子串查找

str.substr(2,4) 第一个参数为起始位置索引(从0开始),第二个参数为长度

str.substring(2,4) 第一个参数为起始位置索引,第二个参数为结束位置索引

str.slice(x,y) 若x,y都为正数时与substring()相同,若为负数时,则从倒数到x个到倒数第y个的子串。x为正时从第一个字符起往后找,为负时从最后一个字符往前找,y为负时表现位置,x为负y为正时y表示长度

 

2.5 子串位置搜索

str.indexOf(“子串”)  // 返回子串的位置

str.indexOf(“子串”,5)  // 从第5个字符开始搜索子串的位置

str.lastIndexOf(“子串”) // 返回子串最后一次出现的位置

str.lastIndexOf(“子串”, 3) // 返回子串最后一次出现的倒数位置,最右为0开始

 

2.6 由分隔符创建字符串数组split()方法

var queryStr:String =”asdf&fak&12”;

var params:Array = queryStr.split(“&”,2) ; 返回为[“asdf”,”fak”]前两个元素

还可以使用正则表达式: var a:Array = str.split(/\s+/);

 

2.7子字符串匹配:search()

匹配的位置获取search():仅返回第一个匹配的位置

var str:String = “The more the better.”;

trace(str.search(“the”)); // 输出9

还可以用正则:

var patten:RegExp=/the/i; // i表示不区分大小写

则:str.search(patten); 返回的是0(The的位置)

返回匹配的第一个子串(若指定g标志,则可以返回所有匹配串的数组)

var str :String = “www.itzcn.com, www.webzcn.org”;

var pattern:RegExp = /\w*.\w*\.[org|com]+/g;

var results:Array = str.match(pattern);

 

2.8子串替换replace(“旧串”,”新串”)或replace(正则,”新串”)

在正则串定义时,可在其后指定g标志表示替换所有符合的,可以指定i标志忽略大小写。

 

三、日期与时间类型

var now:Date = new Date() ; //返回当前时间

var d:Date = new Date(1323231); //返回从1970.01.01加1323231毫秒

var d1:Date = new Date(2000,12,1,0,0,0,0);

Date有以下属性:

fullYear(2011)、month(1-12)、date(1-31)、day(0-6)、hours(0-23)、minutes(0-59)、seconds(0-59)、milliseconds(0-999)

另外的方法:getMonth()、getMonthUTC()等

getTime()可以获取从1970.01.01以来的毫秒数,用setTime(milliseconds)可以用毫秒数来设置时间

 

四、计时器Timer类及其事件处理

4.1命名空间:import flash.utils.Timer;

4.2 TimerEvent.TIMER与TimerEvent.TIMER_COMPLETE事件 

var oneMinuteTimer:Timer = new Timer(1000,60); //每一秒触发,持续60秒

  例:

package

{

  import flash.display.Sprite;

  import flash.events.TimerEvent;

  import flast.utils.Timer;

  public class ShortTimer extends Sprite

  {

    public function ShortTimer()

    {

      var minuteTimer:Timer = new Timer(1000,5);

      minuteTimer.addEventListener(TimerEvent.TIMER,onTick);

      minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE,

onTimerComplete);

      ninuteTimer.start();

    }

   public function onTick(event:TimerEvent):void{

        trace(event.target.currentCount);//当前执行到了第几次

      }

   public function onTimerComplete(event:TimerEvent):void{//时间到};

    }

  }

 

4.3其它计时函数及说明(AS2中的,在AS3中不推荐使用)

setInterval(closure:Function,delay:Number,...args):uint

每隔毫秒后运行

clearInterval(id:uint):void

删除setInterval

setTimeout(closure:Function,delay:Number,..args):uint

指定毫秒后运行

clearTimeout(id:uint):void

 

getTimer():int

返回flash player被初始化以来经过的毫秒数

 

posted @ 2011-12-15 23:29  羊圈里最帅的羊  阅读(1158)  评论(0编辑  收藏  举报