您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x从入门到精通第十课《Cocos2d-x中的Sprite》

2015-09-02 16:59 429 查看

一.Sprite的概念

Sprite,即精灵。在Cocos2d-x官网上,Sprite是这样定义的:



Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。主要的类关系如下:
简单过程可描述为:使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。



官网给出的解释很多,很复杂,也很官方,看完可能同学们会感到有点晕,这里我给大家说一下我对于精灵的理解:所谓精灵,其实就是一个四边形,这个四边形可以加载显示单图片和序列帧图片。同时它的四个顶点的位置,色彩,透明度等信息可以被我们控制和改变。精灵,是我们对于图型图像进行控制的基础操作物体。



看了我的总结是不是有点明白sprite是个什么东东了呢。如果还是不明白也没关系,慢慢体会你就会明白了,跟着我们课程的节奏走,就能带你超神!。



二.Sprite的创建

创建精灵有三种方法,代码如下:

//通过直接创建的方式创建sprite
    auto sprite = Sprite::create("Logo.png");
    //添加到Layer上
    addChild(sprite);
    //设置sprite的坐标
    sprite->setPosition(Vec2(200,320));
    
    //通过贴图创建sprite
    auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->addImage("Logo.png"));
    //添加到layer上
    addChild(sprite1);
    //设置坐标
    sprite1->setPosition(Vec2(480,320));
    
    //通过spriteFrame创建sprite
    //创建精灵帧
    auto spriteframe = SpriteFrame::createWithTexture(TextureCache::getInstance()->addImage("Logo.png"), Rect(0,0,256,162));
    //创建sprite
    auto sprite2 = Sprite::createWithSpriteFrame(spriteframe);
    //添加到Layer上
    addChild(sprite2);
    //设置坐标
    sprite2->setPosition(Vec2(480,320));




从代码中我们可以看出这三种创建方式的使用。



第一种方法:就是直接调用Sprite的create 方法,这是我们最常用的一种精灵创建所使用的方法,也是最容易使用的精灵创建方法,它只需要填写图片文件名称,内部进行了加载图片产生纹理的处理。

第二种方法:通过纹理管理器加载一个图片产生纹理,并使用这个纹理来创建Sprite。这么做有什么用呢?有一个用处是在实际项目开发中,我们往往会使用TextureCache的addImageAsync 的方法去异步加载游戏中使用到的大部分的纹理,当我需要创建Sprite的时候直接从这个纹理缓存中取得就可以了。(注意:使用异步加载纹理,是为了让我们的游戏流畅的运行而不会被图片加载造成停顿。)

第三种方法:通过SpriteFrame来创建Sprite,这种主要是我们创建animation动画的时候,会把动画的纹理加载的SpriteFrameCache中,然后播放动画的时候需要一个sprite来作为执行对象来使用,而创建该sprite的时候我们就直接从这个动画的中取得spriteFrame,来创建这个sprite。



三.Sprite的属性设置

Sprite有很多属性可以用来根据我们的需要进行调整,通过源码我可以出到Sprite的都有哪些属性可以供我们来设置,使用。下面我们通过代码来看一下我们经常用到的sprite的属性,如下:

//通过直接创建的方式创建sprite
    auto sprite = Sprite::create("Logo.png");
    //添加到Layer上
    addChild(sprite);
    //设置sprite的坐标
    sprite->setPosition(Vec2(200,320));
    //改变sprite的大小
    sprite->setScale(0.5,2.0);
    //改变透明度
    sprite->setOpacity(128);
    //改变角度
    sprite->setRotation(60);
    //设置是否可见
    sprite->setVisible(true);


上面代码我们列出来了一些常用的Sprite的属性设置,通过注释相信大家能看明白一些,这些都是经常使用到的Sprite的属性,我们一定要熟练掌握,建议大家多去尝试写一下上面的代码,看看Sprite执行这些操作之后的效果是什么样子,加深我们的记忆。



后面我们会讲到Cocos2d-x的Action,其实到时候我们发现Cocos2d-x的Action大多数都是通过改变执行对象本身的属性来实现的,学好Sprite的属性设置才能更好的理解Action的原理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: