Cocos2d-x 自定义动画
来源:互联网 发布:孕囊第三个数据最大 编辑:程序博客网 时间:2024/05/16 04:43
出处:http://blog.csdn.net/zhy_cheng/article/details/8272388
上篇中实现的是Cocos2d-x提供给我们的动画,这次要实现的动画是自定义的动画。
这次实现的是让一个精灵一直执行我给的图片,从而达到动画的效果,还是截几张图看看。
图片资源来自解压《捕鱼达人》和《魔塔》
一共有18张图片。
- CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");
- CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(0,0,32,32));
- CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32,0,32,32));
- CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(64,0,32,32));
- CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(96,0,32,32));
- CCArray *animFrames=CCArray::create();
- CC_BREAK_IF(!animFrames);
- animFrames->addObject(frame0);
- animFrames->addObject(frame1);
- animFrames->addObject(frame2);
- animFrames->addObject(frame3);
- CCAnimation *animation=CCAnimation::createWithSpriteFrames(animFrames,0.2f);
- CC_BREAK_IF(!animation);
- CCSprite *heroSprite0=CCSprite::createWithSpriteFrame(frame0);
- CC_BREAK_IF(!heroSprite0);
- heroSprite0->setPosition(ccp(100,100));
- addChild(heroSprite0,1);
- CCAnimate *animate=CCAnimate::create(animation);
- heroSprite0->runAction(CCRepeatForever::create(animate));//一直执行下去
CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(0,0,32,32));CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32,0,32,32));CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(64,0,32,32));CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(96,0,32,32));CCArray *animFrames=CCArray::create();CC_BREAK_IF(!animFrames);animFrames->addObject(frame0);animFrames->addObject(frame1);animFrames->addObject(frame2);animFrames->addObject(frame3);CCAnimation *animation=CCAnimation::createWithSpriteFrames(animFrames,0.2f);CC_BREAK_IF(!animation);CCSprite *heroSprite0=CCSprite::createWithSpriteFrame(frame0);CC_BREAK_IF(!heroSprite0);heroSprite0->setPosition(ccp(100,100));addChild(heroSprite0,1);CCAnimate *animate=CCAnimate::create(animation);heroSprite0->runAction(CCRepeatForever::create(animate));//一直执行下去
上面的动画是使英雄一直执行走动下去。
还有另外的一种方法来实现自定义动画:
- CCAnimation* animation2 = CCAnimation::create();
- for(int i=1;i<19;i++)
- {
- char *tt=newchar[3];
- memset(tt,0,3);
- std::string s;
- if(i<10)
- {
- itoa(i,tt,10);
- s="fish00"+std::string(tt);
- }
- else
- {
- itoa(i,tt,10);
- s="fish0"+std::string(tt);
- }
- s=s+".png";
- CCTexture2D *playerRunTexture = CCTextureCache::sharedTextureCache()->addImage(s.c_str());
- animation2->addSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture, cocos2d::CCRectMake(0, 0, 100, 100)));
- delete []tt;
- }
- animation2->setDelayPerUnit(0.2f);
- CCAnimate* action = CCAnimate::create(animation2);
- CCTexture2D *playerRunTexture0 = CCTextureCache::sharedTextureCache()->addImage("fish001.png");
- CCSprite *p=CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture0, cocos2d::CCRectMake(0, 0, 100, 100)));
- p->setPosition(ccp(200,200));
- addChild(p,1);
- p->runAction(CCRepeatForever::create(action));
CCAnimation* animation2 = CCAnimation::create(); for(int i=1;i<19;i++){char *tt=new char[3];memset(tt,0,3);std::string s;if(i<10){itoa(i,tt,10);s="fish00"+std::string(tt);}else{itoa(i,tt,10);s="fish0"+std::string(tt);}s=s+".png";CCTexture2D *playerRunTexture = CCTextureCache::sharedTextureCache()->addImage(s.c_str()); animation2->addSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture, cocos2d::CCRectMake(0, 0, 100, 100))); delete []tt;} animation2->setDelayPerUnit(0.2f); CCAnimate* action = CCAnimate::create(animation2); CCTexture2D *playerRunTexture0 = CCTextureCache::sharedTextureCache()->addImage("fish001.png"); CCSprite *p=CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture0, cocos2d::CCRectMake(0, 0, 100, 100)));p->setPosition(ccp(200,200));addChild(p,1);p->runAction(CCRepeatForever::create(action));
代码是如此的简单,我就不多说了。
最后照例贴出init函数的全部代码:
- bool HelloWorld::init()
- {
- mPercentage=100;
- bool bRet = false;
- do
- {
- CC_BREAK_IF(! CCLayer::init());
- CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");
- CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(0,0,32,32));
- CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32,0,32,32));
- CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(64,0,32,32));
- CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(96,0,32,32));
- CCArray *animFrames=CCArray::create();
- CC_BREAK_IF(!animFrames);
- animFrames->addObject(frame0);
- animFrames->addObject(frame1);
- animFrames->addObject(frame2);
- animFrames->addObject(frame3);
- CCAnimation *animation=CCAnimation::createWithSpriteFrames(animFrames,0.2f);
- CC_BREAK_IF(!animation);
- CCSprite *heroSprite0=CCSprite::createWithSpriteFrame(frame0);
- CC_BREAK_IF(!heroSprite0);
- heroSprite0->setPosition(ccp(100,100));
- addChild(heroSprite0,1);
- CCAnimate *animate=CCAnimate::create(animation);
- heroSprite0->runAction(CCRepeatForever::create(animate));//一直执行下去
- CCActionInterval *en=CCRotateBy::create(5,-360);
- CCSprite *hua=CCSprite::create("end.png");
- hua->setPosition(ccp(240,160));
- addChild(hua,1);
- hua->runAction(CCRepeatForever::create(en));
- CCAnimation* animation2 = CCAnimation::create();
- for(int i=1;i<19;i++)
- {
- char *tt=newchar[3];
- memset(tt,0,3);
- std::string s;
- if(i<10)
- {
- itoa(i,tt,10);
- s="fish00"+std::string(tt);
- }
- else
- {
- itoa(i,tt,10);
- s="fish0"+std::string(tt);
- }
- s=s+".png";
- CCTexture2D *playerRunTexture = CCTextureCache::sharedTextureCache()->addImage(s.c_str());
- animation2->addSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture, cocos2d::CCRectMake(0, 0, 100, 100)));
- delete []tt;
- }
- animation2->setDelayPerUnit(0.2f);
- CCAnimate* action = CCAnimate::create(animation2);
- CCTexture2D *playerRunTexture0 = CCTextureCache::sharedTextureCache()->addImage("fish001.png");
- CCSprite *p=CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture0, cocos2d::CCRectMake(0, 0, 100, 100)));
- p->setPosition(ccp(200,200));
- addChild(p,1);
- p->runAction(CCRepeatForever::create(action));
- bRet = true;
- } while (0);
- return bRet;
- }
- Cocos2d-x 自定义动画
- Cocos2d-x 自定义动画
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- 【Cocos2d-x 011】 自定义动画 使用plist来实现
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- Cocos2d-x:自定义动画 使用plist来实现
- cocos2d-x动画工具
- cocos2d-x 动画
- Cocos2d-x切换动画
- cocos2d-x CCAnimate 动画
- Cocos2d-x 系统动画
- Cocos2d-x 帧动画
- Cocos2d-x 系统动画
- cocos2d-x帧动画
- Cocos2d-x-->CCSprite 动画
- cocos2d-x:动画 Animations
- cocos2d-x 过度动画
- Cocos2d-x 反复动画
- 数据库中,如何通过表名获取表的字段名(属性名)?
- WebBrowser 在多线程中,无法释放内存
- 深度探析如何提高Web表单的可用性
- Tornado的初步了解
- 【转】让你提升命令行效率的 Bash 快捷键
- Cocos2d-x 自定义动画
- jQuery中的animate的应用(图片的自动移动)
- cpp const关键字
- layoutSubviews的调用时机
- posix多线程有感--线程高级编程(线程属性pthread_attr_t)---实时调度
- iOS的QuickTime Plugin
- 约瑟夫环hdu 2925 Musical Chairs
- C++拷贝构造函数
- zoj 3703 Happy Programming Contest 不平常的01背包