转载请标明:转载自【小枫栏目】,博文链接:http://blog.csdn.net/my183100521/article/details/10138427
在游戏中还有一个比较重要的元素,那就是精灵类,我们可以通过单张图片或者是贴图集的方式来生成精灵。精灵类的用法比较灵活,还有精灵批处理的方法帮助我们创建多个精灵并节约渲染效率。
我的目录资源:
利用纹理地图(texture atlas),把我们想用的图像都合并在一起。
首先我们把想要用的图像都放到一个目录里, 再用TexturePacker 的 "Add Folder" 功能把目录加进去, TexturePacker 的默认输出格式就是 cocos2d:
为了节省位置, 我们可以把Border padding 和Shape Padding 都设为1, 而选了 Allow rotation 可以让 TexturePacker 更为有效率的摆放图像在纹理里:
在键入了输出的档案名字后, 我们就可以用 Publish 把纹理输出.
接下来, 我们把输出的两个档案(我们这里的例子是animal.plist 和 animal.png) 放到 Resources 里, 就可以在程序里用 CCSpriteFrameCache 把纹理和有关资料载入:
cache->addSpriteFramesWithFile("images.plist", "images.png");注意:记得有关资源添加到项目,不然会报错!
在HelloWorldScene.cpp,init()内添加代码,
//添加精灵 CCSprite* rSprite = CCSprite::create("Role.png"); rSprite->setPosition( ccp(size.width/2, size.height/2) ); this->addChild(rSprite, 0); //添加纹理,批次渲染 CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("animal.plist", "animal.png"); CCTexture2D *texture = CCTextureCache::sharedTextureCache()->textureForKey("animal.png"); CCSpriteBatchNode *spriteBatch = CCSpriteBatchNode::batchNodeWithTexture(texture); this->addChild(spriteBatch); //添加"animal.plist"对应精灵 CCSprite *l1 = CCSprite::createWithSpriteFrameName("fish.png"); l1->setPosition( ccp(size.width/4, size.height/2) ); this->addChild(l1,1);
注:本人使用cocos2d-x 2.0.4版本
引用帖子:http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=775&extra=page%3D1