欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cocos2dx精灵的动作与帧动画同时执行的方法

程序员文章站 2024-03-25 20:08:10
...

Cocos2dx精灵的动作与帧动画同时执行的方法

这个问题卡了我四五天,烦死了!关于Cocos2dx中让精灵的动作与帧动画同时执行的方法:

1 .一提到同时我就想到了spawn并列动作去实现

 sprite->runAction(Spawn::create(MoveBy::create(1.2f, Vec2(50, 0)), animate, NULL));

结果是这样根本行不通!运行后会卡住然后报错
2.接着我查了一下,说用两个runAction可以解决问题,上代码

 sprite->runAction(MoveBy::create(1.2f, Vec2(50, 0)));
 sprite->runAction(animate);

然后我去试了试,写在init函数里面确实没啥问题,但是要是用菜单项(按钮)或者虚拟轮盘控制就又不行了
3.接下来!重点来了!打记要考!
第四天我在洗澡的时候(就是在洗澡的时候)想,我为什么不能把它们用一个函数实现呢?然后我尝试,并且问题迎刃而解,然后成就感满满。
在.h文件里面写一个函数,在.cpp文件里面实现它,这里注意的是Animation的代码也要写到函数里面去,Animate也写到函数里,再用就没有问题了~

void HelloWorld::Animation_d(Direction dir)
{
 Sprite* lufei1Sprite = Sprite::create("lufei/lufei3.png", Rect(153, 17, 37, 65));
 Sprite* lufei2Sprite = Sprite::create("lufei/lufei3.png", Rect(193, 17, 50, 65));
 Sprite* lufei3Sprite = Sprite::create("lufei/lufei3.png", Rect(250, 17, 60, 65));
 Sprite* lufei4Sprite = Sprite::create("lufei/lufei3.png", Rect(315, 17, 47, 65));
 Sprite* lufei5Sprite = Sprite::create("lufei/lufei3.png", Rect(368, 17, 40, 65));
 Sprite* lufei6Sprite = Sprite::create("lufei/lufei3.png", Rect(409, 17, 51, 65));
 Sprite* lufei7Sprite = Sprite::create("lufei/lufei3.png", Rect(467, 17, 56, 65));
 Sprite* lufei8Sprite = Sprite::create("lufei/lufei3.png", Rect(533, 17, 46, 65));
相关标签: Cocos2dx c++