【COCOS2D-X v4 学习笔记】Sprite

2020-04-09  本文已影响0人  FrankNotes

参考自官方文件https://docs.cocos2d-x.org/cocos2d-x/v4/zh/sprites/manipulation.html

1.创建Sprite

1.1简单创建

使用图像创建

使用整张图像,图像是多少的分辨率,创建出来的精灵就是多少的分辨率。

auto mySprite = Sprite::create("mysprite.png");
结果:

 

使用矩形创建

使用矩形创建一个尺寸只有原始图像一部分的精灵,初始 x 坐标,初始 y 坐标,矩形宽,矩形高。其中,左上角的坐标是 (0, 0)。

auto mySprite = Sprite::create("mysprite.png", Rect(0,0,40,40));

结果:


 

1.2使用图集创建

图集(Sprite Sheet) 是通过专门的工具将多张图片合并成一张大图,并通过 plist 等格式的文件索引的资源

//加载缓存类,并将图集存放至缓存类之中
auto* m_frameCache = SpriteFrameCache::getInstance();
m_frameCache->addSpriteFramesWithFile("run.plist", "run.png");

//读取缓存集中的每一张图片
Vector<SpriteFrame*> frameArray;
for (int i = 1; i < 9; i++)
{
    char s[20];
  sprintf(s, "run%d.png", i);
  auto* frame = m_frameCache->getSpriteFrameByName(s);
    frameArray.pushBack(frame);
}

//使用缓存制作动画
Animation* animation = Animation::createWithSpriteFrames(frameArray);
animation->setLoops(-1);//表示无限循环播放
animation->setDelayPerUnit(0.1f);//每两张图片的时间隔,图片数目越少,间隔最小就越小

auto* action = Animate::create(animation);
sprite->runAction(action);

 

1.3使用精灵缓存创建

精灵缓存可以提高访问速度

//创建精灵缓存:
auto mysprite = Sprite::createWithSpriteFrameName("mysprite.png");

//从精灵的缓存对象 SpriteFrameCache 访问一个精灵
auto newspriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("Blue_Front1.png");
auto newSprite = Sprite::createWithSpriteFrame(newspriteFrame);

 

2.控制Sprite

2.1锚点

// 左下
mySprite->setAnchorPoint(0, 0);

// 左上
mySprite->setAnchorPoint(0, 1);

// 右下
mySprite->setAnchorPoint(1, 0);

// 右上
mySprite->setAnchorPoint(1, 1);

// 默认
mySprite->setAnchorPoint(0.5, 0.5);
上一篇 下一篇

猜你喜欢

热点阅读