update action functions

This commit is contained in:
Nomango 2018-04-03 09:34:38 +08:00
parent b1dcc466f3
commit 3794cef124
1 changed files with 126 additions and 168 deletions

View File

@ -640,221 +640,172 @@ namespace e2d
namespace action namespace action
{ {
// 创建相对位移动画 // 创建相对位移动画
ActionMoveBy* MoveBy( inline e2d::ActionMoveBy* MoveBy(
double duration, /* 动画持续时长 */ double duration, /* 动画持续时长 */
Vector vector /* 位移向量 */ Vector vector /* 位移向量 */
); )
// 创建位移动画
ActionMoveTo* MoveTo(
double duration, /* 动画持续时长 */
Point pos /* 位移至目标点的坐标 */
);
// 创建相对缩放动画
ActionScaleBy* ScaleBy(
double duration, /* 动画持续时长 */
double scale /* 缩放比例变化 */
);
// 创建相对缩放动画
ActionScaleBy* ScaleBy(
double duration, /* 动画持续时长 */
double scaleX, /* 横向缩放比例变化 */
double scaleY /* 纵向缩放比例变化 */
);
// 创建缩放动画
ActionScaleTo* ScaleTo(
double duration, /* 动画持续时长 */
double scale /* 缩放至目标比例 */
);
// 创建缩放动画
ActionScaleTo* ScaleTo(
double duration, /* 动画持续时长 */
double scaleX, /* 横向缩放至目标比例 */
double scaleY /* 纵向缩放至目标比例 */
);
// 创建透明度相对渐变动画
ActionOpacityBy* OpacityBy(
double duration, /* 动画持续时长 */
double opacity /* 透明度相对变化值 */
);
// 创建透明度渐变动画
ActionOpacityTo* OpacityTo(
double duration, /* 动画持续时长 */
double opacity /* 透明度渐变至目标值 */
);
// 创建淡入动画
ActionFadeIn* FadeIn(
double duration /* 动画持续时长 */
);
// 创建淡出动画
ActionFadeOut* FadeOut(
double duration /* 动画持续时长 */
);
// 创建相对旋转动画
ActionRotateBy* RotateBy(
double duration, /* 动画持续时长 */
double rotation /* 旋转角度变化值 */
);
// 创建旋转动画
ActionRotateTo* RotateTo(
double duration, /* 动画持续时长 */
double rotation /* 旋转角度至目标值 */
);
// 创建两个动作的连续动作
ActionTwo* Two(
Action * pActionFirst, /* 第一个动作 */
Action * pActionSecond, /* 第二个动作 */
bool bAtSameTime = false /* 同时开始 */
);
// 创建延时动作
ActionDelay* Delay(
double duration /* 延迟时长(秒) */
);
// 创建循环动作
ActionLoop* Loop(
Action * action, /* 执行循环的动作 */
int times = -1 /* 循环次数 */
);
// 创建执行函数对象的动作
ActionFunc* Func(
Function func /* 函数对象 */
);
#if HIGHER_THAN_VS2012
// 创建顺序动作
ActionSequence* Sequence(
const InitList<Action*>& vActions /* 动作数组 */
);
// 创建特定帧间隔的帧动画
Animation* Animate(
double interval, /* 帧间隔(秒) */
const InitList<Image*>& vFrames /* 关键帧数组 */
);
#else
// 创建顺序动作
ActionSequence* Sequence(
int number, /* 动作数量 */
Action * action1, /* 第一个动作 */
...
);
// 创建特定帧间隔的帧动画
Animation* Animate(
double interval, /* 帧间隔(秒) */
int number, /* 帧数量 */
Image * frame, /* 第一帧 */
...
);
#endif
}
inline e2d::ActionMoveBy * e2d::action::MoveBy(double duration, Vector vector)
{ {
return new (std::nothrow) ActionMoveBy(duration, vector); return new (std::nothrow) ActionMoveBy(duration, vector);
} }
inline e2d::ActionMoveTo * e2d::action::MoveTo(double duration, Point pos) // 创建位移动画
inline e2d::ActionMoveTo* MoveTo(
double duration, /* 动画持续时长 */
Point pos /* 位移至目标点的坐标 */
)
{ {
return new (std::nothrow) ActionMoveTo(duration, pos); return new (std::nothrow) ActionMoveTo(duration, pos);
} }
inline e2d::ActionScaleBy * e2d::action::ScaleBy(double duration, double scale) // 创建相对缩放动画
inline e2d::ActionScaleBy* ScaleBy(
double duration, /* 动画持续时长 */
double scale /* 缩放比例变化 */
)
{ {
return new (std::nothrow) ActionScaleBy(duration, scale); return new (std::nothrow) ActionScaleBy(duration, scale);
} }
inline e2d::ActionScaleBy * e2d::action::ScaleBy(double duration, double scaleX, double scaleY) // 创建相对缩放动画
inline e2d::ActionScaleBy* ScaleBy(
double duration, /* 动画持续时长 */
double scaleX, /* 横向缩放比例变化 */
double scaleY /* 纵向缩放比例变化 */
)
{ {
return new (std::nothrow) ActionScaleBy(duration, scaleX, scaleY); return new (std::nothrow) ActionScaleBy(duration, scaleX, scaleY);
} }
inline e2d::ActionScaleTo * e2d::action::ScaleTo(double duration, double scale) // 创建缩放动画
inline e2d::ActionScaleTo* ScaleTo(
double duration, /* 动画持续时长 */
double scale /* 缩放至目标比例 */
)
{ {
return new (std::nothrow) ActionScaleTo(duration, scale); return new (std::nothrow) ActionScaleTo(duration, scale);
} }
inline e2d::ActionScaleTo * e2d::action::ScaleTo(double duration, double scaleX, double scaleY) // 创建缩放动画
inline e2d::ActionScaleTo* ScaleTo(
double duration, /* 动画持续时长 */
double scaleX, /* 横向缩放至目标比例 */
double scaleY /* 纵向缩放至目标比例 */
)
{ {
return new (std::nothrow) ActionScaleTo(duration, scaleX, scaleY); return new (std::nothrow) ActionScaleTo(duration, scaleX, scaleY);
} }
inline e2d::ActionOpacityBy * e2d::action::OpacityBy(double duration, double opacity) // 创建透明度相对渐变动画
inline e2d::ActionOpacityBy* OpacityBy(
double duration, /* 动画持续时长 */
double opacity /* 透明度相对变化值 */
)
{ {
return new (std::nothrow) ActionOpacityBy(duration, opacity); return new (std::nothrow) ActionOpacityBy(duration, opacity);
} }
inline e2d::ActionOpacityTo * e2d::action::OpacityTo(double duration, double opacity) // 创建透明度渐变动画
inline e2d::ActionOpacityTo* OpacityTo(
double duration, /* 动画持续时长 */
double opacity /* 透明度渐变至目标值 */
)
{ {
return new (std::nothrow) ActionOpacityTo(duration, opacity); return new (std::nothrow) ActionOpacityTo(duration, opacity);
} }
inline e2d::ActionFadeIn * e2d::action::FadeIn(double duration) // 创建淡入动画
inline e2d::ActionFadeIn* FadeIn(
double duration /* 动画持续时长 */
)
{ {
return new (std::nothrow) ActionFadeIn(duration); return new (std::nothrow) ActionFadeIn(duration);
} }
inline e2d::ActionFadeOut * e2d::action::FadeOut(double duration) // 创建淡出动画
inline e2d::ActionFadeOut* FadeOut(
double duration /* 动画持续时长 */
)
{ {
return new (std::nothrow) ActionFadeOut(duration); return new (std::nothrow) ActionFadeOut(duration);
} }
inline e2d::ActionRotateBy * e2d::action::RotateBy(double duration, double rotation) // 创建相对旋转动画
inline e2d::ActionRotateBy* RotateBy(
double duration, /* 动画持续时长 */
double rotation /* 旋转角度变化值 */
)
{ {
return new (std::nothrow) ActionRotateBy(duration, rotation); return new (std::nothrow) ActionRotateBy(duration, rotation);
} }
inline e2d::ActionRotateTo * e2d::action::RotateTo(double duration, double rotation) // 创建旋转动画
inline e2d::ActionRotateTo* RotateTo(
double duration, /* 动画持续时长 */
double rotation /* 旋转角度至目标值 */
)
{ {
return new (std::nothrow) ActionRotateTo(duration, rotation); return new (std::nothrow) ActionRotateTo(duration, rotation);
} }
inline e2d::ActionTwo * e2d::action::Two(Action * pActionFirst, Action * pActionSecond, bool bAtSameTime) // 创建两个动作的连续动作
inline e2d::ActionTwo* Two(
Action * pActionFirst, /* 第一个动作 */
Action * pActionSecond, /* 第二个动作 */
bool bAtSameTime = false /* 同时开始 */
)
{ {
return new (std::nothrow) ActionTwo(pActionFirst, pActionSecond, bAtSameTime); return new (std::nothrow) ActionTwo(pActionFirst, pActionSecond, bAtSameTime);
} }
inline e2d::ActionDelay * e2d::action::Delay(double duration) // 创建延时动作
inline e2d::ActionDelay* Delay(
double duration /* 延迟时长(秒) */
)
{ {
return new (std::nothrow) ActionDelay(duration); return new (std::nothrow) ActionDelay(duration);
} }
inline e2d::ActionLoop * e2d::action::Loop(Action * action, int times) // 创建循环动作
inline e2d::ActionLoop* Loop(
Action * action, /* 执行循环的动作 */
int times = -1 /* 循环次数 */
)
{ {
return new (std::nothrow) ActionLoop(action, times); return new (std::nothrow) ActionLoop(action, times);
} }
inline e2d::ActionFunc * e2d::action::Func(Function func) // 创建执行函数对象的动作
inline e2d::ActionFunc* Func(
Function func /* 函数对象 */
)
{ {
return new (std::nothrow) ActionFunc(func); return new (std::nothrow) ActionFunc(func);
} }
#if HIGHER_THAN_VS2012 #if HIGHER_THAN_VS2012
inline e2d::ActionSequence * e2d::action::Sequence(const InitList<Action*>& vActions) // 创建顺序动作
inline e2d::ActionSequence* Sequence(
const InitList<Action*>& vActions /* 动作数组 */
)
{ {
return new (std::nothrow) ActionSequence(vActions); return new (std::nothrow) ActionSequence(vActions);
} }
inline e2d::Animation * e2d::action::Animate(double interval, const InitList<Image*>& vFrames) // 创建特定帧间隔的帧动画
inline e2d::Animation* Animate(
double interval, /* 帧间隔(秒) */
const InitList<Image*>& vFrames /* 关键帧数组 */
)
{ {
return new (std::nothrow) Animation(interval, vFrames); return new (std::nothrow) Animation(interval, vFrames);
} }
#else #else
inline e2d::ActionSequence * e2d::action::Sequence(int number, Action * action1, ...) // 创建顺序动作
inline e2d::ActionSequence* Sequence(
int number, /* 动作数量 */
Action * action1, /* 第一个动作 */
...
)
{ {
auto action = new (std::nothrow) ActionSequence(); auto action = new (std::nothrow) ActionSequence();
if (action) if (action)
@ -872,7 +823,13 @@ namespace e2d
return action; return action;
} }
inline e2d::Animation * e2d::action::Animate(double interval, int number, Image * frame, ...) // 创建特定帧间隔的帧动画
inline e2d::Animation* Animate(
double interval, /* 帧间隔(秒) */
int number, /* 帧数量 */
Image * frame, /* 第一帧 */
...
)
{ {
auto animation = new (std::nothrow) Animation(interval); auto animation = new (std::nothrow) Animation(interval);
if (animation) if (animation)
@ -890,4 +847,5 @@ namespace e2d
return animation; return animation;
} }
#endif #endif
}
} }