代码之家  ›  专栏  ›  技术社区  ›  Fragsworth

类似于PHP在Actionscript中的\uu call()

  •  2
  • Fragsworth  · 技术社区  · 16 年前

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

    在PHP中,使用 __call()

    在ActionScript3中完成同样的任务最简单的方法是什么?

    2 回复  |  直到 16 年前
        1
  •  2
  •   typeoneerror    16 年前

    延伸 flash.utils.Proxy 使用 flash.utils.flash_proxy __get , __set __call 方法是:

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

    因此,如果有一个类扩展了Proxy,您需要:

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

    asdoc的链接有一个简单的实现,应该可以让您继续。我通常将代理类用于API之类的东西。例如,以前我有一个flickrapi包装器,它将函数调用的名称转换为flickrapi中的API方法名称。比如:

    flickr.galleriesGetPhotos();
    

    在callProperty中,我对第一个单词进行了拆分以获得API名称“flickr.galleries.get\照片". 我想当时的名字不一样。

        2
  •  1
  •   cooltechnomax    16 年前

    您可以尝试使用代理类。

     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

    推荐文章