cocos2d-x 动作

注:从个人博客园移植,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);                  

待定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹤九日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值