Cocos2dx游戏开发系列笔记16:来个Demo:《喵汪大战》之cocos2dx版本移植问题

懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 )

《喵汪大战》原作者:bill_man  http://my.csdn.net/bill_man 

周五晚上

这是上班族最喜欢的时间

昨晚在win8.1上跑暗黑2

修改兼容之后竟然完美运行

于是怀旧的进去做了几个任务

修改了data\global\excel目录下的skills技能表格文件

女巫技能改的乱七八糟的

爽到爆




ok,今天跑个网上比较火的例子:《喵汪大战》 点此下载

虽然网上很多介绍了,但你不自己敲一下跑一下,经验还是他们的。

估计很像之前的打飞机的游戏

开始

报环境:vs2012,cocos2dx2.2,win8.1



首先用脚本新建个空项目,

然后把下载的源码的代码和资源拷贝到项目中

回到vs导入现有项之后运行

然后开始改bug吧

bug1:

1>d:\java\cocos2d-x-2.2\projects\maowang\classes\appdelegate.cpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

项目右键   属性c++    高级     禁用特定警告  添加刚才报的 4819    再次编译这个警告就没了


bug2

d:\java\cocos2d-x-2.2\projects\maowang\classes\gameaboutscene.h(29): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
方法前加个 int 即可


bug3

d:\java\cocos2d-x-2.2\projects\maowang\classes\gamescene.cpp(90): error C2665: “cocos2d::CCSprite::create”: 3 个重载中没有一个可以转换所有参数类型

blood3 = CCSprite::create(ui->getTexture());

可能CCSprite的初始化函数改了,后面是getTexture,于是用CCSprite::createWithTexture 即可。


bug4

d:\java\cocos2d-x-2.2\projects\maowang\classes\gamescene.cpp(74): error C2665: “cocos2d::CCArray::create”: 2 个重载中没有一个可以转换所有参数类型

enemys=CCArray::createWithCapacity(3);
    //enemys = CCArray::create(3);
修改CCArray初始化方法即可。

--------------------------

改着改着,突然觉得这些bug只是cocos2dx版本的问题。

要不我下个新点的版本试试?哈哈太懒了


重新导入了比较新的项目代码

果然报错少了,但是还有错,继续改


bug5

1>d:\java\cocos2d-x-2.2\projects\maowang\classes\gamescene.cpp(30): warning C4018: “<”: 有符号/无符号不匹配
for(int i = 0;i < enemybullets->capacity();i ++){
i改为unsigned即可。


bug6

d:\java\cocos2d-x-2.2\projects\maowang\classes\gamemenuscene.cpp(132): error C2228: “.c_str”的左边必须有类/结构/联合
CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("background.mp3")
fullPathFromRelativePath("background.mp3") 改为 fullPathForFilename()


bug7 

1>d:\java\cocos2d-x-2.2\projects\maowang\classes\gameobjhero.cpp(107): error C2039: “locationInView”: 不是“cocos2d::CCTouch”的成员
//CCPoint touchPoint = touch->locationInView();

改为:
CCPoint touchPoint = touch->getLocationInView();


bug8

1>d:\java\cocos2d-x-2.2\projects\maowang\classes\gameobjhero.cpp(86): error C3861: “CCRectContainsPoint”: 找不到标识符
	//return CCRect::CCRectContainsPoint(rect(), convertTouchToNodeSpaceAR(touch));
	改为:
	return rect().containsPoint(convertTouchToNodeSpaceAR(touch));


bug9 

1>GameScene.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall GameEnemyBullet::setIsNotVisable(class cocos2d::CCNode *)" (?setIsNotVisable@GameEnemyBullet@@QAEXPAVCCNode@cocos2d@@@Z),该符号在函数 "public: virtual bool __thiscall GameMain::init(void)" (?init@GameMain@@UAE_NXZ) 中被引用

最后一个bug老改不好,先屏蔽了,终于看到游戏画面了,

//mybullet->setIsNotVisable(mybullet);



但没运行一会就宕了

看来最后那句不能直接注释掉。

void GameHeroBullet::setIsNotVisable(CCNode *pSender){
	this->setVisible(false);
	isvisable = false;
	this->stopAllActions();
}
仔细看下这个方法,其实pSender这个参数根本没用到。

去掉参数,ok,但还是只能运行一小会。


bug10

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
待解决

好吧,不执着了。先这样吧。


 

------------------- 飞船起飞--------------------       

Cocos2dx游戏开发系列笔记15.1:添加虚拟摇杆SneakyInput

Cocos2dx游戏开发系列笔记14:一个横版拳击游戏Demo-下(让游戏跑在手机上)

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游戏开发环境搭建

-------------------- 飞船降落-------------------- 


最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)

 


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值