cocos2d-x学习日志(2) --精灵类

转载请标明:转载自【小枫栏目】,博文链接:http://blog.csdn.net/my183100521/article/details/10138427

一、简介

在游戏中还有一个比较重要的元素,那就是精灵类,我们可以通过单张图片或者是贴图集的方式来生成精灵。精灵类的用法比较灵活,还有精灵批处理的方法帮助我们创建多个精灵并节约渲染效率。


二、实例

1.准备工作

我的目录资源:


cocos2d-x学习日志(2) --精灵类_第1张图片


利用纹理地图(texture atlas),把我们想用的图像都合并在一起。

首先我们把想要用的图像都放到一个目录里, 再用TexturePacker 的 "Add Folder"  功能把目录加进去, TexturePacker 的默认输出格式就是 cocos2d:

cocos2d-x学习日志(2) --精灵类_第2张图片
 


为了节省位置, 我们可以把Border padding 和Shape Padding 都设为1, 而选了 Allow rotation 可以让 TexturePacker 更为有效率的摆放图像在纹理里:

cocos2d-x学习日志(2) --精灵类_第3张图片
 


在键入了输出的档案名字后, 我们就可以用 Publish 把纹理输出.

接下来, 我们把输出的两个档案(我们这里的例子是animal.plist 和 animal.png) 放到 Resources 里, 就可以在程序里用 CCSpriteFrameCache 把纹理和有关资料载入:

cache->addSpriteFramesWithFile("images.plist", "images.png");
注意:记得有关资源添加到项目,不然会报错!


2.代码

在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) --精灵类_第4张图片


注:本人使用cocos2d-x 2.0.4版本

引用帖子:http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=775&extra=page%3D1


你可能感兴趣的:(cocos2d-x)