Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将方法添加到现有(内置)ActionScript Flash类中,而不扩展它并创建新类?_Flash_Actionscript 3_Actionscript - Fatal编程技术网

是否可以将方法添加到现有(内置)ActionScript Flash类中,而不扩展它并创建新类?

是否可以将方法添加到现有(内置)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 Flash类添加一个方法,而不扩展它并创建一个新类

例如,我想创建自己的fadeOut方法并将其添加到MovieClip类中,以便所有MovieClip都有该方法,并像这样使用它:ball_mc.fadeOut()

我不想像这样扩展类:


随着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扩展了对象,该对象是动态的,因此可以附加其他方法和属性,而无需编译器抱怨。但你试过这个号码吗?