第四章:ActionScript语言和语法 包

1.包

package samples{

public class SampleCode{

public var sampleGreeting:String;

public function sampleFunction(){

trace(sampleGreeting + " from sampleFunction()");

}

}

}

package samples{ --> 包,名称 samples

public class SampleCode{ --> 类,名称 SampleCode

说明:

由于位于 samples 包中,编译器会自动将类名限定为 samples.SampleCode。

同理,属性名为 samples.SampleCode.sampleGreeting 方法名为 samples.SampleCode.sampleFunction。

包的顶级可以放类,属性,方法。

包的顶级只能使用 public 和 internal 访问说明符。internal 是默认的,表示只能在当前包内使用。

包的作用是确保标识符唯一,防止共享时同名类冲突。

大部分 ActionScript3.0 都划分到 flash 包,如 flash.display 包中包含显示列表 API,flash.events 包中包含新的事件模型。

2.导入包

import samples.*; 或者 import samples.SampleCode;

3.命名空间

表示属性或者函数位于哪个地方,例如 public 是公共命名空间,internal 命名空间将应用于没有命名空间属性的任何标识符。

定义命名空间使用 namespace,如 namespace version1;

在属性或方法声明中使用命名空间,而不是访问控制说明符来应用命名空间,如 version1 functionmyFunction(){}

应用了命名空间后,可以使用 use namespace version1; myFunction(); 来引用函数,还可以使用限定名称 version1::myFunction(); 来引用函数。

命名空间包含统一资源标识符值(URI),可以省略。

namespace flash_proxy = "http://www.adobe.com/flash/proxy";

namespace flash_proxy;

在包内或者类中定义的命名空间如果没有使用访问说明符 public 则对包外代码不可见。如: public namespace flash_proxy;

命名空间应用智能是属性和方法,类不能使用。

使用命名空间后将不能再使用访问控制说明符 public private protected internal,因为他们是互斥的。

4.扩展

假设:

package flash.utlis{

public namespace flash_proxy; 定义的命名空间

}

public class Proxy{ Proxy类

flash_proxy funxtion callProperty(name:*,...rest):* 使用了命名空间的方法

flash_proxy funxtion deleteProperty(name:*):Boolean

}

那么:

MyProxy.as

package{

import flash.utils.Proxy; 导入 Proxy 类

import flash.utils.flash_proxy; 导入 flash_proxy 命名空间

public dynamic class MyProxy extends Proxy{ 用自己的 MyProxy 类 扩展 Proxy 类,外部 new 类需要使用访问控制说明符 public

flash_proxy override function callProperty(name:*,...rest):*{ 覆盖 Proxy 类 的 callProperty 方法,必须使用 falsh_proxy 命名空间

trace("method call intercepted: " + name);

}

}

}

如果现在在第一帧动作中创建 MyProxy 类,并调用未定义方法

var mySample:MyProxy = new MyProxy();

mySample.testing();

则 Proxy 对象会截获对这个方法的调用,并执行覆盖后的 callProperty 方法。

输出:method call intercepted: testing

你可能感兴趣的:(第四章:ActionScript语言和语法 包)