【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);