是否可以将方法添加到现有(内置)ActionScript Flash类中,而不扩展它并创建新类?
是否可以向现有(内置)ActionScript Flash类添加一个方法,而不扩展它并创建一个新类 例如,我想创建自己的fadeOut方法并将其添加到MovieClip类中,以便所有MovieClip都有该方法,并像这样使用它:ball_mc.fadeOut() 我不想像这样扩展类:是否可以将方法添加到现有(内置)ActionScript Flash类中,而不扩展它并创建新类?,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,是否可以向现有(内置)ActionScript Flash类添加一个方法,而不扩展它并创建一个新类 例如,我想创建自己的fadeOut方法并将其添加到MovieClip类中,以便所有MovieClip都有该方法,并像这样使用它:ball_mc.fadeOut() 我不想像这样扩展类: 随着Actionscript 3.0的出现,公共类NewMovieClipClass扩展了MovieClip{…},Actionscript不再是原型。这种实践实际上被认为是糟糕的面向对象设计,因为MovieCli
随着Actionscript 3.0的出现,公共类NewMovieClipClass扩展了MovieClip{…},Actionscript不再是原型。这种实践实际上被认为是糟糕的面向对象设计,因为MovieClip类的用户会突然有新方法或不可预测的方法,从而打破设计契约。我认为实现这一点最简单的方法是将Sprite或MovieClip子类化,添加所需的方法。有什么原因不能这样做吗?随着Actionscript 3.0的出现,Actionscript不再是原型。这种实践实际上被认为是糟糕的面向对象设计,因为MovieClip类的用户会突然有新方法或不可预测的方法,从而打破设计契约。我认为实现这一点最简单的方法是将Sprite或MovieClip子类化,添加所需的方法。您不能这样做有什么原因吗?您可以在AS3中使用
prototype
:
MovieClip.prototype.foo=function():void{
trace("this is a test");
};
var movieClip:MovieClip = new MovieClip();
movieClip.foo();//this is a test
您可以在AS3中使用
prototype
:
MovieClip.prototype.foo=function():void{
trace("this is a test");
};
var movieClip:MovieClip = new MovieClip();
movieClip.foo();//this is a test
+我同意你的答案,但你总是可以使用prototypesprototype与“动态”类修饰符无关:是的,但是能够在没有引起问题的mc.foo()的情况下编译是。我同意上述回答。你可以用prototype做你想做的事,这取决于你是否应该。@Rudi你可以在任何对象上使用prototype,没有任何问题+1同意你的答案,但你总是可以使用prototype prototype与“dynamic”类修饰符无关:是的,但是可以在没有mc.foo()的情况下编译造成问题的原因是。我同意上述受访者的看法。你可以用prototype做你想做的事情,这取决于你是否应该。@Rudi你可以在任何对象上使用prototype而没有任何问题。你测试过这个吗?MovieClip扩展了对象,该对象是动态的,因此可以附加其他方法和属性,而无需编译器抱怨。但是你试过这个号码吗?你试过这个吗?MovieClip扩展了对象,该对象是动态的,因此可以附加其他方法和属性,而无需编译器抱怨。但你试过这个号码吗?