好的我对我猜的基本OOP有一些疑问。例如,假设我有很多不同的对象,它们有不同的类。比方说,一个名为car(Car.as)的对象,然后我有一辆卡车(truck.as)和一辆轻便摩托车(轻便摩托车.as)。现在不是在所有这些中编写一个简单的函数,我不能有一个类然后将这个函数附加到这些对象的每个人身上吗?
例如,我希望它们能够淡出。然后我有一个名为“AlphaThings”的类,在这个类中我写了一个简单的fadeout函数。
我不能以某种方式将此函数附加到另一个对象?喜欢
AlphaThings.fadeout(car);
AlphaThings.fadeout(truck);
AlphaThings.fadein(moped);
谢谢,对不起,如果有一些拼写错误的单词。
答案 0 :(得分:4)
您正在尝试完成继承,这是一个类从另一个继承属性和方法的地方。
继承是在定义类时使用extends
关键字完成的。
您的三个对象Car
,Truck
和Moped
可以继承(扩展)AlphaThings
,如下所示:
class Car extends AlphaThings
{
//
}
您的Car
现在将包含AlphaThings
中定义的所有属性和方法,例如您提到的.fadein()
和.fadeout()
。
奖励信息:
当您扩展另一个类时,您可以更改基类中存在的方法在从其继承的类中的工作方式。这是使用override
关键字完成的。
例如,您可能希望Car
在使用.fadein()
时执行稍微不同或额外的操作,因此您可以覆盖此方法:
override public function fadein():void
{
// Some additional logic.
// ...
super.fadein();
}
行super.fadein()
用于调用原始.fadein()
函数。如果省略此项,则可以完全重写该函数并忽略先前定义的操作。
关于此特定情况:
这个答案当然直截了当,通过解释如何实现继承来直接回答问题。话虽如此,您尝试实现的目标可以使用其他一些路线更干净地完成。
例如,请考虑此Tweening Library by Greensock。该库可以以不同的方式处理任何对象上的任何值(包括alpha)的转换。以下是为什么这对使用继承来说很好的一些例子:
AlphaThings
即可使用它。AlphaThings
中提取部分代码。答案 1 :(得分:1)
您可以在父类中声明所需的行为,然后从中派生出Car,Truck和Moped。然后他们会得到方法。
以下链接更详细地解释了它: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7fcd.html