• 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被初始化以来经过的毫秒数

     

  • 相关阅读:
    数据库如何部署上线阅读总结
    Nginx解决防盗链,服务器宕机,跨域,防DDOS
    跨域和表单重复提交
    Socet
    Redis发布订阅
    MySQL和Oracle的区别
    Redis事务、持久化、发布订阅
    Redis主从复制和哨兵模式
    Idea中使用Redis的Java客户端和Jedis
    Redis介绍及命令
  • 原文地址:https://www.cnblogs.com/rosiu/p/2289565.html
Copyright © 2020-2023  润新知