- 論壇徽章:
- 0
|
* 靜態(tài)類與密封類
ActionScript3中用dynamic修飾的類是動(dòng)態(tài)類,可以動(dòng)態(tài)添加屬性、方法。
不用dynamic修飾的類默認(rèn)為密封類,不能動(dòng)態(tài)添加屬性方法。
例如:
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";
//如果不注釋掉,這句執(zhí)行會(huì)出錯(cuò),因?yàn)镕oo類中沒有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中并不支持方法重載。
可以用“...”關(guān)鍵字來實(shí)現(xiàn)類型的功能。做法:在方法的"()"中寫入“...參數(shù)”,比如...someArgs。這時(shí)someArg其實(shí)是一個(gè)數(shù)組,持有輸入的所有的參數(shù)。然后通過分析師someArgs的內(nèi)容來執(zhí)行不同的分支,達(dá)到函數(shù)重載的效果。
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博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/93876/showart_2160832.html |
|