cocos2d-x Sprite精灵对象创建方法

Sprite 精灵类

static Sprite * create()
static Sprite * create(const std::string &filename)
static Sprite * create(const::string &filename,const Rect &rect)

2. 创建精灵类对象 例:

1⃣️使用纹理对象创建Sprite对象

背景

auto bk=Sprite::create(“background.png”);
background->setAnchorPoint(Vec2::ZERO);
this->addChild(bk,0);
2⃣️使用纹理图集
需要的各种图片 在一张图上集合 使用时 裁切下来
auto mountain=Sprite::create(“Picture.png”,Rect(2,15,300,300));
mountain->setPosition(Vec2(100,200));
this->addChild(mountain,0);
可以达到性能优化 减少文件读取次数 加速渲染 减少内存消耗
3⃣️使用精灵帧缓存
可以使用Zwoptex 和 TexturePacker工具设计生成纹理图集 ,以及纹理图集的坐标文件(.plist),plist 是属性列表文件,它是一种XML 文件
SpriteFrameCache * fc=SpriteFrameCache::getInstance();// 创建精灵帧缓存对象
fc->addSpriteFramesWithFile(“Picture.plist”);//对象调用addSpriteFramesWithFile()方法给缓存添加.plist
既然上面创建了精灵帧缓存对象,那么怎么用这个缓存来读取里边的SpriteFrame(精灵帧对象)呢 两种方法如下
//创建精灵帧对象获取
SpriteFrame * hero =fc->getSpriteFrameByName(tree.png);
//通过创建Sprite对象获取 不过调用方法是 createWithSpriteFrameName() 不是create()
auto tree=Sprite::createWithSpriteFrameName(“hero.png”);
[创建精灵帧缓存和添加.plist可以合并为一句]
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“Picture.plist”);
请注意:精灵帧缓存和精灵帧是两个类 , 创建对象时要分清 。其实精灵帧缓存fc里边缓存的就是精灵帧 如( tree,hero,…….) 这些图片
而精灵帧不再使用后需要移除,函数如下
(1)void removeSpriteFrameByName(const std::string &name); // 从精灵帧缓存中删除一个精灵帧.
(2) void removeSpriteFramesFromFile(const std::string &plist) ;// 一个.plist文件移除多重精灵帧。 存储在这文件的精灵帧将被删除。 当某个特定的纹理需要被删除时候调用这个方法很方便。
(3) void removeUnusedSpriteFrames();// 移除没用的精灵帧。 保留数为1的精灵帧将被删除。 在开始一个新的场景之后调用这个方法很方便。
(3) void removeSpriteFrames();// 清除载入精灵帧的字典(缓存)。 如果接收到“Memory Warning”,那么需要调用这个方法。 就眼前来说,它将释放一些资源来阻止你的应用崩溃掉。 从中期的角度,它将分配更多的资源。 从长远来说,它将变成相同的。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...