我目前正在开发一个系统,其中对象沿着贝塞尔曲线动画。在曲线上的各种用户定义点处,可能存在动画对象必须响应的事件。这可能是速度的变化,动画例程的变化,面对方向的变化等......
到目前为止,我有以下 AnimationEvent 类。
class AnimationEvent
{
private:
unsigned int m_eventID;
float m_InteroplationPoint;
float m_SpeedInMPS;
public:
AnimationEvent(unsigned int id, float interpolationPoint);
~AnimationEvent(void);
const unsigned int getEventID();
void setInterpolationPoint(float interpPoint);
const float getInterpPoint();
const float getSpeed();
};
每个事件都被分配为沿曲线的对象,当到达其插值点时,曲线类调用该getSpeed()
函数以更改当前动画速度。
我真正想做的是实现一个系统,例如使用装饰器设计模式,其中事件可以用多个对象装饰,当达到时,将应用所有装饰。我遇到的问题是我无法将指向父对象的指针传递给子对象,因为这会创建一个循环依赖项,但我也有一个问题,我不知道(在编译时)什么类型的动作活动将被装饰。
任何关于如何克服这个问题的想法将不胜感激!如果我忘记了任何可能有帮助的信息,我会尝试编辑它。