免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2422 | 回复: 0

ActionScript 3 学习笔记(3)2010-01-26 [复制链接]

论坛徽章:
0
发表于 2010-01-26 13:46 |显示全部楼层
* 静态类与密封类
   ActionScript3中用dynamic修饰的类是动态类,可以动态添加属性、方法。
   不用dynamic修饰的类默认为密封类,不能动态添加属性方法。
   例如:
package org.kingda.book.basicoop{
    import flash.display.Sprite;

    public class SampleDynamicClass extends Sprite{
        public function SampleDynamicClass(){
            var foo:Foo = new Foo();
            var bar:Bar = new Bar();
            //foo.url = "www.g.cn";
            //如果不注释掉,这句执行会出错,因为Foo类中没有url
            bar.url = "www.g.cn";
            for(var i in foo){
                trace(i + ":" + foo);
            }
            for(var k in bar){
                trace(k + ":" + bar[k]);
            }
        }
    }
}

class Foo{
    public var web:String = "Google";
}

class Bar{
    public var web:String = "Google";
}
*ActionScript 3中并不支持方法重载。
    可以用“...”关键字来实现类型的功能。做法:在方法的"()"中写入“...参数”,比如...someArgs。这时someArg其实是一个数组,持有输入的所有的参数。然后通过分析师someArgs的内容来执行不同的分支,达到函数重载的效果。

package com.test{
    import flash.diplay.Sprite;
   
    public class SampleOverload extends Sprite{
        public function SampleOverload(){
            overload();
            overload(3);
            overload("www.g.cn");
            overload(12,"sss",new Object());
        }
    }
    private function overload(...args):*{
        if(args.length == 0){
            return reportDefault();
        }
        if(args.length == 1){
            if(typeOf(args[0]) == "number"){
                return reportNumber(args[0]);
            }else{
                return reportErr(args[0]);
            }
        }
        if(args.length > 1){
            return reportArray(args);
        }
    }
     private function reportDefault():Boolean{
          trace("-_-b");
          return false;
      }
     private function reportNumber(num:Number):Number{
         trace("we got a number" + num);
         return num;
     }
     private function report(obj:*):*{
         trace("we don't understand this object" + obj);
         return obj;
     }
     private function reportArray(ary:Array):Array{
         trace("we got an array:" + ary);
         return ary;
     }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93876/showart_2160832.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP