注:从个人博客园移植,cocos2d-x 3.x
XXXBy: 支持反向reverse
XXXTo: 不支持
- MoveTo/MoveBy 创建一个移动的动作
// 参数1:移动到目标坐标所需的时间 参数2:目标坐标
// MoveBy支持reverse 可以获取其反向动作
ActionInterval *moveBy = MoveBy::create(5,Vec2(300, 100));
ActionInterval *actionmoveback= moveBy->reverse();
sp->runAction(actionmoveback);
- ScaleTo/ScaleBy 创建一个缩放的动作
// 参数1:达到缩放大小所需的时间 参数2 :缩放的比例
ActionInterval *scaleto = ScaleTo ::create(2, 2);
sp->runAction(scaleto);
- RotateTo/RotateBy 创建一个旋转的动作
// 参数1:旋转的时间 参数2:旋转角度,正为顺时针,负为逆时针
ActionInterval *rotateto = RotateTo::create(2, 90);
sp->runAction(rotateto);
- SkewTo/SkewBy 创建一个倾斜的动作
// 参数1:倾斜到特定角度所需的时间 参数2:x轴的倾斜角度 参数3:y轴的倾斜角度
ActionInterval *skewto = SkewTo::create(2, 10, 10);
sp->runAction(skewto);
- JumpTo/JumpBy 创建一个跳跃的动作
/*
参数1:跳到目标动作位子的所需时间
参数2:目标位置
参数3:跳的高度 参数4: 跳到目标位置的次数
*/
ActionInterval *jumpto = JumpTo ::create(2, Vec2(300, 200), 50, 4 );
sp->runAction(jumpto);
- BezierTo/BezierBy 创建一个贝塞尔曲线运动的动作
// 参数1:贝塞尔曲线运动的时间 参数2 : BezierConfig结构体
// BezierConfig结构体
BezierConfig bezierCon;
bezierCon.controlPoint_1=Vec2(200, 150);//控制点1
bezierCon.controlPoint_2=Vec2(200, 160);//控制点2
bezierCon.endPosition =Vec2(340, 100); //结束位置
ActionInterval * action = BezierTo::create(2, bezierCon);
sp->runAction(action);
- FadeIn / FadeOut / FadeTo 创建渐变动作
/*
FadeIn 创建一个渐变出现的动作 参数是时间
FadeOut 创建一个渐变消失的动作 参数是时间
FadeTo 不透明度的变换,参数1:持续时间 参数2:设置透明度SetOpacity(0~100)
*/
ActionInterval *fadein = FadeIn::create(2);
ActionInterval *fadeout = FadeOut::create(2);
- TintTo/TintBy 创建染色动作
// 参数1: 持续的时间. 参数2,3,4: RGB颜色值,范围为0~255
auto tintAct = TintBy::create(3, 255, 0, 0);
auto tintre = tintAct->reverse()
- Blink 创建闪烁动作
// 参数1: 持续的时间. 参数2: 闪烁的次数
auto blinkAct = Blink::create(2.0f, 5);
- DelayTime 创建一个延迟的动作
//参数 延迟的时间
ActionInterval * delaytime = DelayTime::create(3);
sp->runAction(delaytime);
- OrbitCamera 创建一个球面坐标轨迹进行旋转的动作
/*
参数1 : 旋转轨迹的时间
参数2 :起始半径
参数3:半径差
参数4:起始z角
参数5:旋转z角的差
参数6:起始x角
参数7:旋转x角的差
*/
ActionInterval *orbitcameraa = OrbitCamera::create(3, 10, 0, 45, 180, 90, 0);
sp->runAction(orbitcameraa);
// 创建一个点数组
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));
- CardinalSplineBy 曲线运动
/*
参数一: 持续的时间
参数二: 点数组
参数三: 张力,可理解为惯性,数值越大,惯性越大。可修改其数值,但要与drawCardinalSpline第2个参数相对应
*/
auto tension = 0;
auto action = CardinalSplineBy::create(3, array, tension);
// 创建相反动作
auto reverse = action->reverse();
// 创建序列动作
auto seq = Sequence::create(action, reverse, nullptr);
sprite1->runAction(seq);
// 使用DrawNode绘制自定义图形
auto drawNode1 = DrawNode::create();
drawNode1->setPosition(Vec2(50,50));
// 绘制曲线,参数:点数组,张力,精度(指线段的精细精度,越大分段越多,越精细), 颜色
drawNode1->drawCardinalSpline(array, tension, 100, Color4F(1.0, 0.0, 1.0, 1.0));
this->addChild(drawNode1,0);
- Follow 创建一个跟随动作
/*
参数1:跟随的目标对象 参数2: 跟随范围,离开范围就不再跟随
创建一个参照物spT
*/
Sprite * spt = Sprite::create("Icon.png”);
spt->setPosition(Vec2(420,40));
addChild(spt);
sp->runAction(MoveTo::create(3, Vec2(940,sp->getPositionY())));
Follow * follow = Follow::create(sp,Rect(0, 0, 960, 320));
this-> runAction(follow);
- Speed 让目标动作运行速度加倍动作
// 参数1:目标动作 参数2: 倍速
ActionInterval * move = MoveTo::create(10, p(300,sp->getPositionY()));
Speed * speed = Speed::create(move, 100);
sp->runAction(speed);
- CallFunc 创建一个回调动作
//CallFunc 创建一个回调动作(调用不带参数的回调方法);
//CallFuncN 创建一个回调动作(调用 带一个参数的回调方法);
//CallFuncND 创建一个回调动作(调用 带两个参数的回调方法);
//参数1:目标动作
//参数2:目标回调函数
CallFunc *funcall = CallFunc::create(this, callfunc_selector(HelloWorld::callbackC));
CallFuncN *funcall = CallFuncN::create(this, callfuncN_selector(HelloWorld::callbackN));
CallFuncND *funcall = CallFuncND::create(this, callfuncND_selector(HelloWorld::callbackND) ,(void*)0xbebabeba);
- Spawn 多个动作同时执行
// 参数:目标动作的可变参数
ActionInterval *move1 = MoveTo::create(10, p(300,sp->getPositionY()));
ActionInterval *scale = ScaleTo::create(2, 3);
ActionInterval *rotate = RotateTo::create(4, 190);
FiniteTimeAction *spawn = Spawn::create(move1,scale,rotate,NULL);
sp->runAction(spawn);
- Sequence 让多个动作按照前后顺序逐一执行
// 参数:目标动作的可变参数
ActionInterval *move2 = MoveTo::create(2, p(300, sp->getPositionY()));
ActionInterval *scalet = ScaleTo::create(2, 3);
FiniteTimeAction *seq = Sequence::create(move2,scalet,NULL);
sp->runAction(seq);
- Repeat 对目标动作进行重复运动(目标动作可以是 Sequence , Spawn)
// 参数1:目标动作
// 参数2:重复次数
// RepeatForever 对目标动作进行永久性的重复运动(目标动作可以是 Sequence , Spawn)
// 参数:目标动作
ActionInterval *move = MoveTo::create(1, p(300, sp->getPositionY()));
ActionInterval *move1 = MoveTo::create(1, p(100,100));
FiniteTimeAction *seq = Sequence::create(move,move1,NULL);
ActionInterval *repeatForever = RepeatForever::create(( ActionInterval* )seq);
sp->runAction(repeatForever);
- 其他:
// 让目标动作缓慢开始,参数:目标动作
auto act = EaseBounceIn::create(moveAct);
// 目标动作赋予反弹力,且以动作结束开始反弹, 参数:目标动作
auto act = EaseBounceOut::create(moveAct);
// 目标动作赋予反弹力,且以开始与结束开始反弹,参数:目标动作
auto act = EaseBounceInOut::create(moveAct);
// 目标动作起点位置赋予回力 参数:目标动作
auto act = EaseBackIn::create(moveAct);
// 目标动作重点位置赋予回力 参数:目标动作
auto act = EaseBackOut::create(moveAct);
// 目标动作起点和终点赋予回力,参数:目标动作
auto act = EaseBackInOut::create(moveAct);
// 让目标动作起点赋予弹性,参数:目标动作
auto act = EaseElasticIn::create(moveAct);
// 让目标动作终点赋予弹性,参数:目标动作
auto act = EaseElasticOut::create(moveAct);
// 让目标动作起点终点赋予弹性,参数:目标动作
auto act = EaseElasticInOut::create(moveAct);
// 让目标动作缓慢开始
auto act = EaseExponentialIn::create(moveAct);
// 让目标动作缓慢终止
auto act = EaseExponentialOut::create(moveAct);
// 让目标动作缓慢开始和终止
auto act = EaseExponentialInOut::create(moveAct);
// 让目标动作又慢到快
auto act = EaseSineIn::create(moveAct);
// 让目标动作又快到慢
auto act = EaseSineOut::create(moveAct);
// 让目标动作又慢到快再快到慢
auto act = EaseSineInOut::create(moveAct);
待定