在用cocos2d-x开发一款游戏,平时都基于windows开发,昨天想编译下Android版的试下,在改正了几个错误后终于编过了,一阵欣喜。可是启动游戏,直接黑屏退出,真机和模拟器都是,心一下就凉了,开始找问题。由于不会NDK断点调试,决定打log。
首先在我怀疑的几个地方打了log,结果都没输出来,好吧,干脆在applicationDidFinishLaunching这里面去打,发现还是没输出来,开始慌了,心想这下麻烦大了,启动的地方都没执行到。正在踌躇,突然灵光一闪,想到全局变量会先于main函数构造,代码里定义了一个全局的配置对象,不会就是这里出问题了吧?带着猜测,在那个全局配置对象类的构造函数中打上log。哈哈,这次打出东西来了,也找到了问题的所在。我那个配置类会先去文件加载字体等配置信息,当时为了简单,就直接用了CCDictionary的createWithContentsOfFile从xml文件中加载配置,就是这里出错了。具体为什么会加载失败,就没继续去跟了。
最后总结一下:全局变量(全局对象)会先于main函数构造,如果出现在启动的地方都没执行到的情况,可以考虑是否全局对象构造的时候出现了问题!