愚人呓语的AS3学习笔记:Function

笔记

 首先,AS3里function的参数可以有默认值了。

public function TestFunc(){
    myFunc();
}
private function myFunc(para1:int=10,para2:String="str"):void{
    trace(para1 + " , " + para2);    //10 , str
}

  AS3里不能给出多余的参数,

public function TestFunc(){
    myFunc(2,"3",4);
}
private function myFunc(para1:int,para2:String):void{
    trace(para1 + " , " + para2);
}

编译器给出参数不匹配的错误:ArgumentError: Error #1063: Argument count mismatch on TestFunc/TestFunc::myFunc(). Expected 2, got 3.
  这样以前那种用 arguments 拿到不固定参数的方法就不能用了。AS3给出一个新的关键字:… (rest) parameter

public function TestFunc(){
    myFunc(2,"3",4,"5",true);
}
private function myFunc(para1:int,para2:String,... more):void{
    trace(para1 + " , " + para2);    //2 , 3
    trace(more);    //4,5,true
}

  在固定的参数后面跟一个 “…” 和一个表达式(如例子中的“more”),“…” 后面所有的参数将被放到以该表达式命名的数组中。注意 “…” 必须是最后一个参数。

  如果使用 “…” arguments 就不可用了,自然也就拿不到 arguments.callee(对当前正在执行的函数的引用),所以在确定不使用 callee 的情况下才能用 “…”。

  提到 arguments ,arguments.caller 已经被 “remove” 了。要想拿到 caller 需要把调用函数的 callee 作为参数传给被调用函数。官方的例子:

package {
    import flash.display.Sprite;
 
    public class ArgumentsExample extends Sprite {
        private var count:int = 1;
       
        public function ArgumentsExample() {
            firstFunction(true);
        }
 
        public function firstFunction(callSecond:Boolean) {
            trace(count + ": firstFunction");
            if(callSecond) {
                secondFunction(arguments.callee);
            }
            else {
                trace("CALLS STOPPED");
            }
        }
 
        public function secondFunction(caller:Function) {
            trace(count + ": secondFunction\n");
             count++;
             caller(false);
        }       
    }
}

小编物语:还是那句话,我们不是每个人都能对FLEX如此了解,但我们每个人都能够为我们兴趣做点点努力。只要你的一次点击,一次留言就能给作者更多的动力。国际惯例……集体至愚人呓语的窝灌水。

时间: 2024-10-05 15:55:57

愚人呓语的AS3学习笔记:Function的相关文章

愚人呓语的AS3笔记:for each in

笔记 新的 for each - in 除了遍历XML,同样可以用来遍历数组和对象.创建"百万雄兵": var testArr:Array = new Array();for(var i:Number = 0; i < 1000000; i++){    testArr.push(i);} 以前的 for 和 for - in 以及新的 for each - in 循环: //for    260毫秒var len:Number = testArr.length;for(var

Flash AS3学习笔记

笔记 首先 say hello 一下,在输出面板 trace 出 "Hello World!".复习一下AS2的类代码: class net.eidiot.learnAS3.HelloAs2{    public function HelloAs2(){        trace("Hello World!");    }} 为了让这段代码工作,需要在Flash IDE里场景的第一帧输入代码: import net.eidiot.learnAS3.HelloAs2;

Flash/Flex学习笔记(37):不用系统组件(纯AS3)的视频播放器--只有8.82K

以前为了赶项目,利用系统组件制作过一款视频播放器(见Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器),但是系统组件实在是太大了,最终生成的swf居然有103K,随着AS3的深入学习,昨天又弄了一个只用AS3的播放器,最终只有8.82K,呵呵,这肥减得那是相当厉害. 用到了上一篇(Flash/Flex学习笔记(35):自己动手实现一个滑块控件(JimmySilder))里自己写的的滑块控件,主要代码如下(关键是NetConnection与NetStream对象的使用):

javascript学习笔记(四)function函数部分_基础知识

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. Jscript 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的. 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域是局部的). 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量. 函数的调用方式 1.普通调用:functionName(实际参数...) 2.通过指向函数的变量去调用: var  myVar

Flash/Flex学习笔记(5):捕获摄像头(续)--在线抓屏并保存到客户端本地

必须有摄像头上面的演示才能正常播放. 思路 使用摄像头以及在线抓屏在上一节Flash/Flex学习笔记(2)捕获摄像头 里已经讲过了就不重复粘贴了至于在客户端保存文件Flash里用起来也很简单:直接调用 FileReference 即可另外为了减少图片大小还可能借助AS3.0的扩展库项目地址http://code.google.com/p/as3corelib/把bmp格式的位置转换成jpeg再保存   扩展 结合本文的方法再配合Flash/Flex学习笔记(4)如何打开网页及Get/Post数

Flash/Flex学习笔记(52):使用TweenLite

TweenLite是第三方出品的专用于各种缓动动画的类库,其性能据说已经超过了Adobe官方的Tween. 从网上找到了一篇中文的说明文档:http://files.cnblogs.com/yjmyzz/tweenLite%e4%b8%ad%e6%96%87%e6%89%8b%e5%86%8c%e4%b8%8e%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e.pdf 这是官方的测试示例: AS3类库下载: http://files.cnblogs.com/yjmyzz/g

Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器

今天折腾了大半天,总算搞出了一个功能简单的视频播放器,可以向公司领导交差了 :) 步骤: 1.Flash CS4 中 先拖一个"FLVPlayback"组件到舞台上 注:FLVPlayback本身已经具备了flv播放的基本功能,简单设置下属性就能播放视频了 2.加载xml数据源 xml数据源格式如下: <?xml version="1.0" encoding="utf-8"?> <data> <item flv=&q

Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)

Flash/Flex学习笔记(49):3D基础 里已经介绍了3D透视的基本原理,不过如果每次都要利用象该文中那样写一堆代码,估计很多人不喜欢,事实上AS3的DisplayObject类已经内置了z坐标.rotationX.rotationY.rotationZ属性,再加上PerspectiveProjection类用于处理透视转换,基本上可以满足大多数的3D要求. import flash.events.Event; import flash.display.Sprite; import fla

node.js学习笔记(9) 和谐模式

众所周知,ECMAScript 是一种开放的.国际上广为接受的脚本语言规范. 它本身并不是一种脚本语言.正如在 Web 应用程序中执行有用操作的 bean 集合(例如,Netscape 的 AWT)是 Sun 的 JavaBean 规范的一种实现一样,JavaScript 是 ECMAScript 规范的一种实现. 2015年6月17日,ECMA国际发布了EcmaScript2015,即EcmaScript6(以下简称ES6)草案的正式版.ES6是继ES5之后的一次主要改进,语言规范由ES5.1