我正在尝试创建一个用于为OSU(节奏游戏)创建故事板文件的系统,并且正在尝试创建一个对象来保存每个精灵可以在故事板上拥有的事件的信息。每个事件可以是9种类型中的一种,每种类型都需要不同的参数,但每种类型都有一种起始值和结束值。
例如,如果我想在故事板上移动一个对象,则该对象需要4个值,一个起始x,起始y,结束x和结束y。
如果我想让一个对象淡出故事板,我只需要2个值,一个起始alpha和结束alpha。
我想要做的是每当我创建一个事件对象时,我都可以在用例上定义这些参数。
class Event {
private:
char eType;
int easing;
long int startTime;
long int endTime;
//Some starting paramaters
//Some ending parameters
public:
//Constructors
};
我知道我可以通过几种方法来做到这一点。一种方法是为每种事件类型(eType)制作大量参数和构造函数方法。两个是为每个事件类型创建子类,而不是在父类中定义char eType,我在子类中使用它们各自的参数在构造时定义它们。或者三,我正在瞄准的目标,可能是某种类型的模板可以包含起始值和结束值。
例如,我必须定义颜色更改事件。
_event,easing,starttime,endtime(以ms为单位),[params]
C,0,1000,5000,255,255,255,60,60,60
或旋转90度
R,2,1000,4000,0,90
最后一次更改取决于_event值。 将它作为子类更好,还是有一种方法可以根据不同的值(可能是模板)创建自定义的开始和结束参数集