理论部分
时间间隔动作(ActionInterval)是一个在一段时间内执行的动作。 它有一个开始时间和完成时间。完成时间等于起始时间加上持续时间。
ActionInterval的子类
与位置有关的动作类;
JumpBy,JumpTo,MoveBy,MoveTo,BezierBy,BezierTo,CardinalSplineBy,CardinalSplineTo
与缩放有关的动作类;
ScaleTo,ScaleBy,
与旋转有关的动作类;
RotateBy, RotateTo
与倾斜有关的动作类
SkewTo,SkewBy
与颜色变化有关的动作类
FadeTo,TintBy,TintTo
序列动作有关的动作类
Sequence,Spawn
与时间有关的动作类
DelayTime,Repeat, RepeatForever,ReverseTime,ActionFloat
与进度有关的动作类
ProgressFromTo, ProgressTo
与可见性有关的动作类
Blink
与网格有关的动作类
GridAction
与缓动有关的动作类
ActionEase
与动画有关的动作类
Animate
与3D有关的动作类
ActionCamera,Animate3D
有振幅有关的动作类
AccelAmplitude, AccelDeccelAmplitude,DeccelAmplitude
其他相关动作
ActionTween,TargetedAction
代码部分
JumpBy,JumpTo类的API
static JumpBy * create (float duration, //持续时间,以秒为单位。
const Vec2 &position, //跳跃的距离。
float height, //跳跃的高度。
int jumps) //跳跃的次数。
static JumpTo * create (float duration, //持续时间,以秒为单位。
const Vec2 &position, //跳跃的目的地的位置。
float height, //跳跃的高度。
int jumps) //跳跃的次数。
实例:
auto actionTo = JumpTo::create(2, Vec2(300,300), 50, 4); auto actionBy = JumpBy::create(2, Vec2(300,0), 50, 4);
MoveBy,MoveTo类的API
static MoveBy * create (float duration, //持续时间,以秒为单位。
const Vec2 &deltaPosition) //位移,Vec2类型。
static MoveBy * create (float duration, //持续时间,以秒为单位。
const Vec3 &deltaPosition) //位移,Vec3类型。
static MoveTo * create (float duration, //持续时间,以秒为单位。
const Vec2 &position) //二维世界的目标位置。
static MoveTo * create (float duration, //持续时间,以秒为单位。
const Vec3 &position) //三维世界的目标位置。
实例:
auto s = Director::getInstance()->getWinSize(); auto actionTo = MoveTo::create(2, Vec2(s.width-40, s.height-40)); auto actionBy = MoveBy::create(2, Vec2(80,80));
BezierBy,BezierTo类的API
static BezierBy * create (float t, //持续时间,以秒为单位。
const ccBezierConfig &c) //贝塞尔曲线配置。
static BezierTo * create (float t, //持续时间,以秒为单位。
const ccBezierConfig &c) //贝塞尔曲线配置。
实例:
// sprite 1 ccBezierConfig bezier; bezier.controlPoint_1 = Vec2(0, s.height/2); bezier.controlPoint_2 = Vec2(300, -s.height/2); bezier.endPosition = Vec2(300,100); auto bezierForward = BezierBy::create(3, bezier); auto bezierBack = bezierForward->reverse(); auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, nullptr)); // sprite 2 _tamara->setPosition(80,160); ccBezierConfig bezier2; bezier2.controlPoint_1 = Vec2(100, s.height/2); bezier2.controlPoint_2 = Vec2(200, -s.height/2); bezier2.endPosition = Vec2(240,160); auto bezierTo1 = BezierTo::create(2, bezier2);
CardinalSplineBy,CardinalSplineTo类的API
static CardinalSplineBy * create (float duration, //以秒为单位的持续时间。
PointArray *points, //控制点数组。
float tension) //曲线张力。
static CardinalSplineTo * create (float duration,
PointArray *points, //控制点数组。
float tension) //曲线张力。
实例:
auto s = Director::getInstance()->getWinSize(); auto array = PointArray::create(20); array->addControlPoint(Vec2(0, 0)); array->addControlPoint(Vec2(s.width/2-30,0)); array->addControlPoint(Vec2(s.width/2-30,s.height-80)); array->addControlPoint(Vec2(0, s.height-80)); array->addControlPoint(Vec2(0, 0)); auto action = CardinalSplineBy::create(3, array, 0);
注,CardinalSplineBy,CardinalSplineTo有个子类继承者CatmullRomTo,CatmullRomBy,区别就是设置默认设定张力0.5,不可改。
ScaleTo,ScaleBy类的API
static ScaleTo * create (float duration, //持续时间,以秒为单位。
float s) //X和Y轴的缩放比例。
static ScaleTo * create (float duration, //持续时间,以秒为单位。
float sx, //X轴缩放比例。
float sy) //Y轴缩放比例。
static ScaleTo * create (float duration, //持续时间,以秒为单位。
float sx, //X轴缩放比例。
float sy, //Y轴缩放比例。
float sz) //Z轴缩放比例。
实例:
auto actionTo = ScaleTo::create(2.0f, 0.5f); auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f);
RotateBy, RotateTo类的API
static RotateBy * create (float duration, //持续时间,以秒为单位。
float deltaAngle) //旋转角度。
static RotateBy * create (float duration, //持续时间,以秒为单位。
float deltaAngleZ_X, //X轴旋转角度,以角度值计。
float deltaAngleZ_Y) //Y轴旋转角度,以角度值计。
static RotateBy * create (float duration, //持续时间,以秒为单位。
const Vec3 &deltaAngle3D) //三维旋转角度。
static RotateTo * create (float duration, //持续时间,以秒为单位。
float dstAngleX, //X轴的目标角度,以角度值计。
float dstAngleY) //Y轴的目标角度,以角度值计。
static RotateTo * create (float duration, //持续时间,以秒为单位。
float dstAngle) //目标角度,以角度值计。
static RotateTo * create (float duration, //持续时间,以秒为单位。
const Vec3 &dstAngle3D) //三维旋转角度。
实例:
auto actionTo = RotateTo::create(2, 180, 180); auto actionToBack = RotateTo::create(2, 0, 0); auto actionBy = RotateBy::create(2, 0.0f, 360);
SkewTo,SkewBy类的API
static SkewTo * create (float t, //持续时间,以秒为单位。
float sx, //X轴目标倾斜角度。
float sy) //Y轴目标倾斜角度。
static SkewBy * create (float t, //持续时间,以秒为单位。
float deltaSkewX, //X轴倾斜角。
float deltaSkewY) //Y轴倾斜角。
实例:
auto actionTo = SkewTo::create(2, 37.2f, -37.2f); auto actionToBack = SkewTo::create(2, 0, 0); auto actionBy = SkewBy::create(2, 0.0f, -90.0f);