actionscript3中的动态类(dynamic class)
五月 15, 2009 in RIA Flex
如Java或者C++这样面向对象语言中,只有通过实例化类来创建一个对象,对象只能访问类中定义的属性和方法,如下面Employee的定义:
在程序中只能通过如下的方式来访问属性:
1 2 3 4 | Employee emp = new Employee(); emp.firstName = "arone"; emp.lastName = "zhang" ; System.out.println(emp.lastName + "," + emp.firstName); |
而在actionscript中,这样的类被叫做sealed,而它还提供了另外一种类叫做动态类(Dynamic Class),可以在运行时通过程序来添加新的属性或方法,只要在类定义的时候添加关键字:dynamic 就可以,下面通过创建一个DynamicClass类
1 2 3 4 5 6 7 8 9 10 | package { public dynamic class DynamicClass { public var description:String; public function DynamicClass() { } } } |
下面创建一个TestDynamicClass来来动态添加属性 dynamicName 和方法 dynamicFunction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package { import flash.display.Sprite; public class TestDynamicClass extends Sprite { public function TestDynamicClass() { var dynamicClass:DynamicClass = new DynamicClass(); dynamicClass.description = "this's test."; trace("dynamic class description: " + dynamicClass.description); dynamicClass.dynamicName = "dynamicName" ; trace("dynamic property: " + dynamicClass.dynamicName); dynamicClass.dynamicFunction = function(){ trace(dynamicClass.description,dynamicClass.dynamicName); } dynamicClass.dynamicFunction(); } } } |
运行后,输出如下的结果:
1 2 3 | dynamic class description: this's test. dynamic property: dynamicName this's test. dynamicName |
需要注意的是,如果一个继承动态类的类,默认情况下并不是动态类
–
相关文章: