cocos2d-x Sprite精灵对象创建方法
发布时间:2020-12-14 20:21:33 所属栏目:百科 来源:网络整理
导读:Sprite 精灵类 1.精灵对象创建方法 static Sprite * create() static Sprite * create(const std::string filename) static Sprite * create(const::string filename,const Rect rect) 2. 创建精灵类对象 例: 1??使用纹理对象创建Sprite对象 背景 auto bk=S
Sprite 精灵类
1.精灵对象创建方法
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”,那么需要调用这个方法。 就眼前来说,它将释放一些资源来阻止你的应用崩溃掉。 从中期的角度,它将分配更多的资源。 从长远来说,它将变成相同的。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |