Actionscript 3 是否可以将EventListener添加到Actionscript 3的函数中?

Actionscript 3 是否可以将EventListener添加到Actionscript 3的函数中?,actionscript-3,oop,preprocessor,aop,Actionscript 3,Oop,Preprocessor,Aop,我正在尝试在Actionscript 3中设置类似面向方面的编程,基本上我唯一需要做的事情是这样的: SomeClass.getMethod("methodName").addEventListener(afterMethodExecuted, function() { //run code }); 这样,我可以在任何类中的任何方法运行之后(或之前)运行代码,允许许多新的可能性 我应该如何实现这一点?您可以在方法上编写包装器。Flex库的类就是使用。它是通过包装一个属性来实现的,但在A

我正在尝试在Actionscript 3中设置类似面向方面的编程,基本上我唯一需要做的事情是这样的:

SomeClass.getMethod("methodName").addEventListener(afterMethodExecuted, function() {
    //run code
});
这样,我可以在任何类中的任何方法运行之后(或之前)运行代码,允许许多新的可能性


我应该如何实现这一点?

您可以在方法上编写包装器。Flex库的类就是使用。它是通过包装一个属性来实现的,但在ActionScript中,方法只是一个属性

我建议阅读这些方法的代码($FLEX_ROOT/sdks/4.0.0/frameworks/projects/framework/src/),了解如何做到这一点


您可能还对.

感兴趣,请注意,如果我给出的是类而不是对象(类实例),那么应该为所有实例更新给定的方法。你链接的类是这样工作的吗?据我所知,我链接的类不会这样做。您可能可以用类似的方法包装类构造函数,以确保它创建的每个实例都被包装。(我希望这是有意义的-看看这里,看看如何覆盖对象的构造函数)但是这可能会导致性能的严重损失。我不确定性能损失是什么意思。每个实例在实例化时都必须调用一个额外的函数,所以我猜您需要为堆栈帧付费。这应该是唯一的问题,因为Flash已经对所有函数调用进行了动态分派(AFAIK)