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

来源:互联网 发布:sql从入门到精通的书籍 编辑:程序博客网 时间:2024/06/02 07:30
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”,那么需要调用这个方法。 就眼前来说,它将释放一些资源来阻止你的应用崩溃掉。 从中期的角度,它将分配更多的资源。 从长远来说,它将变成相同的。



0 0
原创粉丝点击