像Actions中的PHP的__call()之类的东西

时间:2010-08-24 05:43:42

标签: php actionscript-3

假设(作为一个例子)我有一个类,我想记录所有方法调用。

在PHP中,这可以使用__call()快速轻松地完成,也可以使用装饰器的Python实现。

在Actionscript 3中完成相同操作的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

扩展flash.utils.Proxy并使用flash.utils.flash_proxy命名空间。有类似于__get__set的方法以及删除方法的方法。例如,__call方法是:

override flash_proxy function callProperty(name:*, ...rest):*;

所以,如果有一个扩展代理的类,你可以:

var test:MyObject = new MyObject();
test.myMethodThatIsntDefined("param");

然后将调用callProperty并将name设置为“myMethodThatIsntDefined”,并且“param”将位于... rest数组中。

指向asdoc的链接有一个简单的实现,可以让你前进。我通常将Proxy类用于API。例如,当天我有一个Flickr API包装器,它将函数调用的名称转换为Flickr API中的API方法名称。类似的东西:

flickr.galleriesGetPhotos();

并且在callProperty中,我在第一个单词上拆分以获取API名称“flickr.galleries.get_photos”。我认为这些名字不同。

答案 1 :(得分:1)

您可以尝试使用Proxy类。

 dynamic class MyProxy extends Proxy {
 flash_proxy override function callProperty(name:*, ...rest):* {
   try {
     // custom code here
   }
   catch (e:Error) {
     // respond to error here
   }

}

参见:http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/Proxy.html