懒骨头(http://blog.csdn.net/iamlazybone QQ124774397 青岛 )
还是那张长长的工作桌
哲哲在左边做一个香云纱手包
骨头在这里噼里啪啦的解刨
pad里放着《赢在中国》
桌子中间各种饮料、奶、水果...
进击吧~骨头~
首先感谢Android技术开发群(93367423)的SW同学提供的例子:战神传说
其实就是个打飞机的游戏
开始导入
1 新建项目,使用create_project.py建立一个空项目
2 将源码文件夹里的.cpp和.h还有资源文件拷贝到新建的项目中
3 用vs2012打开新建的项目
4 添加现有项,把cpp和h文件添加到classes里
一运行,好多错,额,尝试着改改
1>------ 已启动生成: 项目: MoonWarriors, 配置: Debug Win32 ------
1> Bullet.cpp
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(31): error C2259: “Bullet”: 不能实例化抽象类
1> 由于下列成员:
1> “void UnitSprite::hurt(void)”: 是抽象的
1> d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\unitsprite.h(21) : 参见“UnitSprite::hurt”的声明
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(6): error C2600: “Bullet::Bullet”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(12): error C2511: “Bullet::Bullet(int,const char *,int)”:“Bullet”中没有找到重载的成员函数
1> d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(8) : 参见“Bullet”的声明
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(46): error C2511: “void Bullet::hurt(void)”:“Bullet”中没有找到重载的成员函数
1> d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.h(8) : 参见“Bullet”的声明
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(67): warning C4305: “参数”: 从“double”到“float”截断
1>d:\java\cocos2d-x-2.2\projects\moonwarriors\classes\bullet.cpp(68): warning C4305: “参数”: 从“double”到“float”截断
骨头不懂C++,尝试着解决下。
首先看这段错误信息:
Bullet.cpp类中,不能实例化
它的父类有几个虚函数,但在Bullet.h文件中,似乎没找到这某个虚函数的定义,好吧,把UnitSprite.h
“Bullet::Bullet”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)
我们在对应的cpp文件中,添加所有的构造函数:
Bullet();
Bullet(int speed, const char *weapon, int attactMode);
ok,再次运行,看到helloworld窗口了。
可为啥不是游戏界面呢,再改改。。。
AppDelegate.cpp类bool AppDelegate::applicationDidFinishLaunching() 方法中,
实例化CCScene方法改为:CCScene *pScene = StartMenu::scene();
并且加入头文件#include "StartMenu.h"
再次运行 OK!
额,看来需要改成竖屏的。
找到win32包下的main.cpp文件,
把19行的 eglView->setFrameSize(480, 320);
改为 eglView->setFrameSize(320, 480);
这次是完全OK了。
游戏截图如上,看起来还怎不错,一个demo做的还比较用心。
不知能否顺利的跑在手机上,走着。
1 首先拷贝资源文件到android系统的assets文件夹下。
2 然后打开android.mk文件,把所有的cpp文件加进去。
3 管理员权限打开cmd,cd到所在目录下,分别使用下面两个命令,修改目录权限
takeown /f * /A /Ricacls * /t /grant:r everyone:f
4 打开cygwin,定位到D:/Java/cocos2d-x-2.2/projects/LuoLiRun/proj.android 你的android目录文件夹下,运行./build_native.sh命令
cygwin报错如下:
jni/Android.mk:12: *** 遗漏分隔符 。 停止。
分隔符,难道是Android.mk格式有问题?
很有可能,于是骨头打开Android.mk文件,仔细检查了下,果然,第三行最后少了 反斜杠,最后多了个反斜杠,改之,再次运行
开始编译代码了,但运行到一半又停了,难报错是main.cpp相关。
难道是因为有两个main.cpp?我记得好像demo里有,然后脚本生成的代码里也有。删掉demo里的main.cpp,并且在Android.mk文件里也删掉。
猜对了!再次进行编译了......
几分钟之后,在cygwin里看到了so文件编译成功。
为了不打扰哲哲休息,骨头决定截稿,明天继续!
------------------- 飞船起飞--------------------
Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo-中
Cocos2dx游戏开发系列笔记12:一个横版拳击游戏Demo-上
Cocos2dx游戏开发系列笔记11:解刨《战神传说》完结篇
Cocos2dx游戏开发系列笔记10:解刨《战神传说》
Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的
Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》
Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?
Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo
Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么
Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin+vs2012游戏开发环境搭建
-------------------- 飞船降落--------------------
最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)
哲哲,小名 YIYI ,手工爱好者,文艺范,手艺人,《YiYiの妙舍》创始人,很有自己想法。