Cocos2d-x 之贴图 Texture2D

来源:互联网 发布:北京数据恢复培训 编辑:程序博客网 时间:2024/05/25 19:56

Texture2D

上一节我们介绍了cocos2d-x中的精灵对象sprite,这一节我们再介绍一下另一个跟显示有很大关系的对象,贴图对象Texture2D。
Texture2D有四种创建方式,从精灵对象得到贴图,从精灵帧对象得到贴图,从贴图缓冲区得到贴图和异步加载贴图,下面分别介绍。

从精灵对象得到贴图

    //从精灵中得到2D贴图    auto sp = Sprite::create("girl.png");    auto texture=sp->getTexture();    auto sprite = Sprite::createWithTexture(texture);

image

从精灵帧对象得到贴图

    //从精灵帧中得到2D贴图    //这种方式得到的贴图是一张包含多个精灵的完整贴图    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("start.plist");    auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("start1.png");    auto texture = frame->getTexture();    //得到精灵在贴图中的位置大小    auto rect = frame->getRect();    auto sprite = Sprite::createWithTexture(texture, rect);

image

从贴图缓冲区得到贴图

使用这种方式得到贴图得先将加载缓冲到贴图缓冲区。

    //从图片缓冲区中获取2D贴图    //首先得先把图片加载到缓冲区    //第一种方式    /*auto texture = TextureCache::getInstance()->addImage("girl.png");    log(TextureCache::getInstance()->getTextureFilePath(texture).c_str());*/    //第二种方式    Image* img=new Image();    img->initWithImageFile("girl.png");    TextureCache::getInstance()->addImage(img, "girl");    auto texture = TextureCache::getInstance()->getTextureForKey("girl");    auto sprite = Sprite::createWithTexture(texture);

image

异步加载图片

    //异步加载图片    auto sprite = Sprite::create();    TextureCache::getInstance()->addImageAsync("girl.png", [sprite,visibleSize,this](Texture2D* tt){        //设置完贴图后要手动设置贴图的大小        sprite->setTexture(tt);        sprite->setTextureRect(Rect(Vec2::ZERO, tt->getContentSize()));        log("%s", tt->getPath().c_str());        log("%f,%f", tt->getContentSize().width, sprite->getContentSize().width);    });

image

原创粉丝点击