Cocos2d-x飞机大战教程笔记

Posted slgkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocos2d-x飞机大战教程笔记相关的知识,希望对你有一定的参考价值。

      咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出非常多错的人,所以还是一路跟着做些笔记比較好。并且因为是用课余时间,所以仅仅能断断续续地做,写下来也好让自己别忘记~

2014/4/22  Day01

      从apk解压获取素材。再用TexturePacker拼接成plist和png。

话说TexturePacker是收费的啊...7天免费,还能够申请1年的使用期。

之前看书还看到有个神器叫zwoptex,貌似是免费的。可惜仅仅有Mac版...╮(╯_╰)╭However。这次用到它仅仅是1分钟的功夫...以后的事就慢慢考虑吧。嗯,还有就是,plist和png都是放在project的Resources文件夹下的,写代码获取文件的时候写文件名称就能够了。

假设放在Resources文件夹的子文件夹下,就把子文件夹名加上去就OK。(这句说给自己听的)记得用斜杠“/”不是反斜杠"\\"...(via http://blog.csdn.net/jackystudio/article/details/11650413 )

      然后创建GameScene.h、GameScene.cpp、GameLayer.h、GameLayer.cpp。

      载入背景滚动图的时候。报了这种错:

      ①error C2440: “=”: 无法从“cocos2d::CCLayer *”转换为“GameLayer *”
                从基类型到派生类型的强制转换须要 dynamic_cast 或 static_cast

      ②fatal error C1083: 无法打开包含文件:“GameScene.h”: No such file or directory

      一開始还真的跟着提示加了个dynamic_cast...结果没实用。上网查了才知道,原来是这样解决的....
      project属性->配置属性->C/C++->常规->附加包括文件夹,把报错类的文件夹加进去。在这里加的就是$(ProjectDir)和$(ProjectDir)inc。依据宏定义。$(ProjectDir)就是project下的proj.win32文件夹,额,inc据说是子文件夹。并且我试了下,两个都是要加的,仅仅加当中一个还不让编译通过...(via http://www.cnblogs.com/txg-blog/archive/2011/03/07/1974857.html )
      按上述步骤设置之后,①②都没有了,可是!又报了这种错:
      ③fatal error C1083: 无法打开包含文件:“AppDelegate.h”: No such file or directory
      好吧看了下。这个AppDelegate.h是Classes文件夹下的,所以加进去的是$(ProjectDir)..\\Classes。
      最终不报错了。但是。说好的滚动背景呢!为什么仅仅有黑乎乎的屏幕...再看了看教程里面的演示样例代码。发现自己的GameScene.h写少了这样一个东西:
      CREATE_FUNC(GameScene); 是调用create()函数的宏。嗯。GameLayer.h里也要写一个 CREATE_FUNC(GameLayer); 好。背景最终滚出来了。没有教程评论里说的黑边...窃喜~

      大神说将GameLayer加到GameScene里面,然后以后的PlaneLayer、EnemyLayer、BulletLayer之类的都加到GameLayer上。

尽管书上也有说Layer之间能够相互调用,但我认为我还是比較想把之后的Layer都加到GameScene里面。

所以对于PlaneLayer对象。我还是在GameScene的init()里面调用create()创建而且addChild()。(via http://blog.csdn.net/jackystudio/article/details/11713197 )

      显示飞机的这一步。报了个链接错误:

      ④error LNK2001: 无法解析的外部符号 "public: static class PlaneLayer * PlaneLayer::sharedPlane" (?sharedPlane@PlaneLayer@@2PAV1@A)

      ....Plane.exe : fatal error LNK1120: 1 个无法解析的外部命令

      果断google...(基础没打好什么都要google的人真悲哀。)static变量的定义应该是这种:

            <数据类型><类名>::<静态数据成员名>=<值>(via http://hi.baidu.com/albert02/item/8ac9464992e5ce0ac11613b5 )

      我写的是这种:PlaneLayer* sharedPlane = NULL; ....改成PlaneLayer* PlaneLayer::sharedPlane = NULL; 之后不报错了。飞机也出现了,闪了闪之后尾巴一直在喷火\\(^o^)/背景也在滚。所以还是能够在GameScene里面创建PlaneLayer的~(事实上本来就能够..)好。明天继续。

以上是关于Cocos2d-x飞机大战教程笔记的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d-x 3.7 飞机大战 决战南海I 我方飞机的实现

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

cocos2d-x 3.7 飞机大战 决战南海I 敌机管理

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)

cocos2d-x 3.7 飞机大战 决战南海I 敌机实现

cocos2d-x 3.7 飞机大战 决战南海I 游戏结束场景