异步加载纹理

来源:互联网 发布:期货库存数据是什么 编辑:程序博客网 时间:2024/05/22 03:13
转载 http://cn.cocos2d-x.org/tutorial/show?id=2450
TextureCache类还支持异步加载资源的功能,利用 addImageAsync 方法。你可以很方面地给addImageAsync方法添加一个回调方法,这样,当纹理异步加载结束的时候,可以得到通知。

TextureCacheTest::TextureCacheTest(): _numberOfSprites(20), _numberOfLoadedSprites(0){    auto size = Director::getInstance()->getWinSize();    _labelLoading = Label::createWithTTF("loading...", "fonts/arial.ttf", 15);    _labelPercent = Label::createWithTTF("%0", "fonts/arial.ttf", 15);    _labelLoading->setPosition(Point(size.width / 2, size.height / 2 - 20));    _labelPercent->setPosition(Point(size.width / 2, size.height / 2 + 20));    this->addChild(_labelLoading);    this->addChild(_labelPercent);    // 异步加载纹理图片 addImageAsync    // 加载完纹理后,会执行回调函数    Director::getInstance()->getTextureCache()->addImageAsync("Images/HelloWorld.png", CC_CALLBACK_1(TextureCacheTest::loadingCallBack, this));    Director::getInstance()->getTextureCache()->addImageAsync("Images/grossini.png", CC_CALLBACK_1(TextureCacheTest::loadingCallBack, this));    Director::getInstance()->getTextureCache()->addImageAsync("Images/CloseNormal.png", CC_CALLBACK_1(TextureCacheTest::loadingCallBack, this));    ....}// 异步加载的回调函数void TextureCacheTest::loadingCallBack(cocos2d::Texture2D *texture){    ++_numberOfLoadedSprites;    char tmp[10];    sprintf(tmp,"%%%d", (int)(((float)_numberOfLoadedSprites / _numberOfSprites) * 100));    _labelPercent->setString(tmp);    if (_numberOfLoadedSprites == _numberOfSprites)    {        this->removeChild(_labelLoading, true);        this->removeChild(_labelPercent, true);        addSprite();    }}



你可以选择异步加载方式,这样你就可以为loading场景增加一个进度条。
0 0