在新的版本下,一些解决方案也随之不同。今天就遇见两个需要注意的地方,第一个是安卓环境新的配置方法;第二个是分辨率的设置与适配。
先说新的配置方法。其实本质上我感觉和2.2.2版本的配置方案是差不多的,只不过更加简单了(不用再手动的配置NDK了)。配置方法在官网上也有:http://cocos2d-x.org/programmersguide/B/index.html,不过其中也有些需要注意,故作整理。
比起以前的配置方法,要多做两个步骤(这两个步骤具体为何,我尚不清楚,不过感觉无妨):
1.添加JAVA_HOME环境变量,内容是jdk的目录;
2.下载解压ANT,添加其根目录下bin目录到PATH环境变量。下载地址:http://pan.baidu.com/s/1i3szmEp
接下来在命令行下运行引擎根目录下的setup.py,根据提示,设置NDK, Android SDK, ANT的目录,这里要注意的是,ANT的配置目录不是其根目录,而是其根目录下的bin目录。之后,在Elipse下面添加、运行项目的方式和以前是一样的。但这里又会出现问题。我在实际运行中,出现了编译错误:format not a string literal and no format arguments [-Werror=format-security],出错的代码是:sprintf(buf, lessons[i]); 即一个非常普通的c语言代码。通过网上查阅才解决了问题,据说是NDK与Eclipse的版本不兼容问题,只要在对应项目的Application.mk添加一句APP_CFLAGS += -Wno-error=format-security就可以了,意思是无视这个error。
问题还没有结束,接下来的问题也是本文最开始提出的第二个注意点:分辨率的设置与适配。在安卓环境下成功编译好项目并运行后,发现屏幕显示歪曲,并且没有触摸反应。最后也是在网上查阅才找到原因。
新版本中好像没有设置屏幕分辨率的代码,采用了默认模式(旧版本中是在main函数中设置的)。解决方法是,在AppDelegate.cpp里,添加一行代码:
glview->setDesignResolutionSize(640,480, kResolutionShowAll);
还要还注意的是:
1.似乎不能用setFrameSize函数了,不然还会出现问题;
2.这其实是一个分辨率适配的代码,并不是游戏窗口大小的设置。因此后续学习肯定还有问题。。