我正在使用XCode 5.1.1构建一个多平台(Cocos2d-x)项目。我发现在我的一些资源可以加载之前似乎有一段延迟。例如,如果我尝试访问这样的文件:
std::ifstream t(path);
if(!t) {
std::cout << "Warning - no such file found" << std::endl;
}
......文件有时不会出现在那里。 (我的意思是它有时似乎没有找到文件。)如果我将负载延迟一秒,那么它就会在那里。此外,如果我插入一个断点,然后继续执行该文件将在那里。如果我从iOS跳板运行应用程序而不是在XCode中调试,它甚至似乎更频繁地发生。
使用Cocos2d-x中的API在项目中加载纹理文件也会发生这种情况。
编辑 @ LearnCocos2D建议我在调用AppDelegate didFinishLaunching函数之前尝试加载文件。我不知道这个要求,但在检查了我的代码之后我很确定在那之后一切都被加载了。未加载的纹理是为在AppDelegate :: applicationDidFinishLaunching()函数内创建的cocos2d :: Scene的子项创建的(我根据Cocos2d-x附带的HelloWorld示例启动了我的项目。)
程序流程是这样的:
AppDelegate::applicationDidFinishLaunching()
//...
auto scene = GameScene::createScene();
//... create Sprites etc, but they never show on the screen :(
编辑好的,我解决了我的问题。事实证明,我对问题的原因完全错了,这实际上是一个导致未定义行为的初始化问题。但是,@ LearnCocos2D关于在资源可用之前必须等待applicationDidFinishLaunching()的评论是一个很好的提示。