您的位置:首页 > 移动开发 > Cocos引擎

地球人已阻止不了程序猿学习cocos2d-x个人学习笔记二

2013-09-04 20:59 561 查看
今天一下午没课,就接着开始研究cocos2d-x了,看到了动画部分,看了感觉还比较容易理解的。然后自己动手,发现不是这么回事,大牛门出教程的时候创建动画都是用的CCMutableArray<CCSpriteFrame*>对象,是以前的版本,而我使用的时候,发现这个会报错,google之后发现原来cocos官网已经把这个函数去除掉了。然后就只能自己找了,通过google和网上的一些文档,发现官网虽然剔除了这个类,但是还有一个新的类CCArray来代替他,而且用起来感觉更方便。下面贴出重要代码和demo截图

 

参考的教程为    http://www.cocoachina.com/gamedev/misc/2012/0528/4297.html
转载请注明出处 http://blog.csdn.net/by_mxy/article/details/11096013 

//批次读取图片,将所有要用到的都放到这里面,这个不懂的同学看我的前面的博客 地球已经阻止不了程序猿学习cocos2d-x 第一篇
CCSpriteFrameCache *cache =CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("game.plist","game.png");

//批次读取纹理
CCTexture2D* texture = CCTextureCache::sharedTextureCache()->textureForKey("game.png");
CCSpriteBatchNode *spriteBatch =CCSpriteBatchNode::batchNodeWithTexture(texture);
addChild(spriteBatch);

//读取背景
CCSprite* backgroundSprite =CCSprite::spriteWithSpriteFrameName("3.png");

backgroundSprite->setPosition(ccp(size.width/2,size.height/2));
spriteBatch->addChild(backgroundSprite,0);

//这个是大头
CCSprite* pSprite = CCSprite::spriteWithSpriteFrameName("1.png");

CC_BREAK_IF(!pSprite);
//	CCSize dim = pSprite->getContentSize(); 获取精灵的长宽
pSprite->setPosition(ccp(size.width/2.0,size.height/2.0));
spriteBatch->addChild(pSprite,0);

//动画代码
//读取行走图的纹理
CCTexture2D *texture2 =CCTextureCache::sharedTextureCache()->addImage("11.png");

//通过纹理来取得每个图
CCSpriteFrame *frame0 =CCSpriteFrame::frameWithTexture(texture2,CCRectMake(34*0,48*0,34,48));
CCSpriteFrame *frame1 =CCSpriteFrame::frameWithTexture(texture2,CCRectMake(34*1,48*0,34,48));
CCSpriteFrame *frame2 =CCSpriteFrame::frameWithTexture(texture2,CCRectMake(34*2,48*0,34,48));
CCSpriteFrame *frame3 =CCSpriteFrame::frameWithTexture(texture2,CCRectMake(34*3,48*0,34,48));

//创建一个数组
CCArray* animFrames = CCArray::createWithCapacity(4);

//数组中存放几张图
animFrames->addObject(frame0);
animFrames->addObject(frame1);
animFrames->addObject(frame2);
animFrames->addObject(frame3);

//创建动画。 0.5秒把图片变换一次
CCAnimation* animation = CCAnimation::createWithSpriteFrames(animFrames, 0.5f);

//把一个动画放在一个CCSprite中播放,m_pSprite是第一个图像
CCSprite *m_pSprite = CCSprite::createWithTexture(texture2,CCRectMake(0,0,34,48));
//设置位置
m_pSprite->setPosition(ccp(size.width/2.0-80,size.height/2.0-80));
this->addChild(m_pSprite,0);
m_pSprite->runAction( CCRepeatForever::create( CCAnimate::create(animation) ) );


 

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: