Cocos精灵

来源:互联网 发布:p2p网络推广方案 编辑:程序博客网 时间:2024/05/01 12:02

精灵

创建精灵

精灵可以通过图片、纹理、精灵帧来创建,至少挂在layer上(当然可以挂在其他精灵上)。

创建方法: Sprite在Layer中的init()函数中直接创建,建好之后应该addChild这个精灵

class SpriteCreate : public Layer

{public:

    static Scene* createScene()//创建自定义scene及自定义Layer(要是静态方法,以便调用)

    {   Scene* scene =Scene::create();

        Layer* layer =T010301SpriteCreate::create();

        scene->addChild(layer);

        return scene;}

    bool init()

    {

        Layer::init();

        // 演示精灵创建的代码

// 通过文件创建

Sprite* sprite = Sprite::create("Images/blocks.png");

addChild(sprite);

        sprite->setPosition(200, 200);//精灵的属性——位置

        // 通过纹理创建精灵,纹理是图片在内存中的表现

        Texture2D* texture =Director::getInstance()->getTextureCache()->addImage("Images/b1.png");

        Sprite* sprite =Sprite::createWithTexture(texture);

        // 通过精灵帧来创建精灵,理解为一张大图包含了很多精灵资源,那么每个精灵图只占一部分    Texture2D* texture = Director::getInstance()->getTextureCache()->addImage("Images/blocks.png");

            SpriteFrame* frame =SpriteFrame::createWithTexture(texture,Rect(0, 0, 32, 32)); //Rect表示了该精灵在大图中的位置

            Sprite* sprite =Sprite::createWithSpriteFrame(frame);

精灵属性

锚点

锚点是精灵的位置的对齐点精灵锚点的默认值是(.5f,.5f),一种百分比表达方式,(1,1)表示右上角,(0,0)表示左下角Vec2类有常量定义了常用的锚点值

            Sprite* sprite =Sprite::create("Images/blocks.png");

            sprite->setAnchorPoint(Vec2(0, 0)); //设置锚点位置(0,0

            sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); //更洋气的设置方法

旋转

以顺时针方向,以锚点为中心,旋转参数指定的角度 sprite->setRotation(30);

变形旋转:sprite->setRotationX(30);  以及  sprite->setRotationY(30);

这个是最新的变形旋转:sprite->setRotationSkewX(180);

缩放:

按照参数指定的值,缩放比例

sprite->setScale(0.5f);  以及 sprite->setScaleX(2.0f);

颜色:

基本方式:sprite->setColor(Color3B(255, 0, 0));

更洋气的方式:sprite->setColor(Color3B::WHITE);

可见度和透明度:

    sprite->setVisible(false);

sprite->setOpacity(128);  // 0 ~ 255,255表示不透明,0表示透明

翻转:

沿着X轴旋转:有true和false两种sprite->setFlippedX(true);

名字和标示:

Name和Tag都是用来标识精灵的,如果标识重复,可能会出现异常

            sprite->setName("abc");//必须唯一

            sprite->setTag(1);

            this->getChildByName("abc");

            this->getChildByTag(1);

        // 更换精灵显示的图片,这个是实现动画的基础(帧动画)

        用:   sprite->setTexture("Images/b1.png");

        或者:SpriteFrame* frame =SpriteFrame::create("Images/b1.png",Rect(0, 0, 79, 46));

            sprite->setSpriteFrame(frame);

大小和位置:

Rectrc = sprite->getBoundingBox();注意BoundingBox是没有set方法的

内容尺寸:

Size sz =sprite->getContentSize();Size只表示大小不表示位置

        sprite->setContentSize(Size(32, 32));

        sprite->setTextureRect(Rect(0, 0, 32,32));相当于截取

数据:

SetUserData()和SetUserObject()用来记录精灵数据和对象,往往第二个用的比较多

自定义精灵类

class Hero : public Sprite //自定义的精灵类

{public:

    static Hero* create()

    {Hero* ret = new Hero;

    ret->init();

    ret->autorelease();

    return ret;}

bool init(){

        Sprite::init();//初始化Hero相关的参数父类的init()

        setTexture("Images/elephant1_Diffuse.png");//      Sprite::initWithFile("Images/elephant1_Diffuse.png");//用文件直接创建,也可以用其他的:Sprite::initWithTexture或者Sprite::initWithSpriteFrame

        return true;

    }

};

0 0
原创粉丝点击