Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270153
  • 博文数量: 99
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1270
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-20 13:27
文章分类

全部博文(99)

文章存档

2011年(1)

2010年(21)

2009年(77)

我的朋友

分类: Java

2010-01-26 13:46:51

* 静态类与密封类
   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 = "";

            //如果不注释掉,这句执行会出错,因为Foo类中没有url
            bar.url = "";

            for(var i in foo){
                trace(i + ":" + foo[i]);
            }

            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("");
            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;

     }
}


阅读(507) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~