cocos2dx 异步加载纹理缓存

la_vie_est_belle
Python领域优质创作者
博客专家认证
2017-02-10 09:18:05
以下是代码:
//异步加载纹理缓存,该段位于init()中
m_nNumberOfLoaded = 0;
Director::getInstance()->getTextureCache()->addImageAsync("texture/home_texture.png", CC_CALLBACK_1(HelloWorld::loadingTextureCallBack, this));
Director::getInstance()->getTextureCache()->addImageAsync("texture/settings_texture.png", CC_CALLBACK_1(HelloWorld::loadingTextureCallBack, this));
Director::getInstance()->getTextureCache()->addImageAsync("texture/gameplay_texture.png", CC_CALLBACK_1(HelloWorld::loadingTextureCallBack, this));


void HelloWorld::loadingTextureCallBack(Texture2D* texture)
{
switch (m_nNumberOfLoaded++)
{
case 0:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/home_texture.plist", texture);
log("home texture ok");
break;
case 1:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/settings_texture.plist", texture);
log("settings texture ok");
break;
case 2:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/gameplay_texture.plist", texture);
log("gameplay texture ok");
this->schedule(schedule_selector(HelloWorld::delayCall), 1, 1, 3);
break;
}
}


以上代码位于HelloWorld.cpp中,运行之后就会进入菜单主界面,有开始游戏,设置等选项。

但之后运行起来发现图片加载不出来,都是白色的。。。但是看白色的像素大小是对的。为什么会变白色呢?


谢谢前辈指导!
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
la_vie_est_belle 2017-02-13
  • 打赏
  • 举报
回复
谢谢两位前辈
verysharp 2017-02-13
  • 打赏
  • 举报
回复
addImageAsync这个函数要在主线程中调用
勤奋的小游侠 2017-02-12
  • 打赏
  • 举报
回复
异步并不快,异步只是使你的UI界面不卡而已。 你最好单步调试一下。
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/home_texture.plist", texture);
换成
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/home_texture.plist", "texture/gameplay_texture.png");
看看是不是这具texture有问题
la_vie_est_belle 2017-02-12
  • 打赏
  • 举报
回复
引用 2楼勤奋的小游侠 的回复:
你的plist里面是什么内容出错了?这个和异步加载应该没有什么关系。 你直接加载可不可看到图片?
直接加载用sprite::create()是可以看到的。 plist文件为什么会出错我就是直接用texturepacker乖乖把一个个图片导入,最后发布。前辈是在用texturepacker时哪里出错了么,导致导出来的plist有问题?
la_vie_est_belle 2017-02-12
  • 打赏
  • 举报
回复
引用 4楼勤奋的小游侠 的回复:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/home_texture.plist", texture); 这一句加载plist的单独提取出来,将plist和png单独加载,不要用那个异步加载。看看能不能显示正确
可以前辈,但为什么异步加载会出问题。如果要提高载入速度的话,异步要快点的吧。
la_vie_est_belle 2017-02-12
  • 打赏
  • 举报
回复
可以前辈,但为什么异步加载会出问题。如果要提高载入速度的话,异步要快点的吧。
勤奋的小游侠 2017-02-12
  • 打赏
  • 举报
回复
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/home_texture.plist", texture); 这一句加载plist的单独提取出来,将plist和png单独加载,不要用那个异步加载。看看能不能显示正确
勤奋的小游侠 2017-02-11
  • 打赏
  • 举报
回复
你的plist里面是什么内容出错了?这个和异步加载应该没有什么关系。 你直接加载可不可看到图片?
la_vie_est_belle 2017-02-10
  • 打赏
  • 举报
回复
为嘛上传上来的图片失真这么严重= =不要在意这些细节。。。主要是那些白框。

721

社区成员

发帖
与我相关
我的任务
社区描述
Cocos2d-x相关内容讨论专区
社区管理员
  • Cocos2d-x
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧