是否可以向现有(内置)ActionScript Flash类添加方法而不扩展它并创建新类?
例如,我想创建自己的fadeOut方法并将其添加到MovieClip类中,以便所有MovieClip都具有该方法,并像这样使用它:ball_mc.fadeOut()
我不想扩展这类课程:
公共类NewMovieClipClass扩展了MovieClip {...}
答案 0 :(得分:3)
您可以在AS3中使用prototype
:
MovieClip.prototype.foo=function():void{
trace("this is a test");
};
var movieClip:MovieClip = new MovieClip();
movieClip.foo();//this is a test
答案 1 :(得分:2)
随着Actionscript 3.0的出现,Actionscript不再是典型的。事实上,这种做法被认为是糟糕的面向对象设计,因为MovieClip类的用户会突然拥有新方法或不可预测的方法,从而破坏了设计合同。我认为实现这一目标的最简单方法是继承Sprite或MovieClip,添加您需要的方法。有没有理由不能这样做?