咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出很多错的人,所以还是一路跟着做些笔记比较好。而且由于是用课余时间,所以只能断断续续地做,写下来也好让自己别忘记~
2014/4/22 Day01
从apk解压获取素材,再用TexturePacker拼接成plist和png。话说TexturePacker是收费的啊...7天免费,还可以申请1年的使用期。之前看书还看到有个神器叫zwoptex,貌似是免费的,可惜只有Mac版...╮(╯_╰)╭However,这次用到它只是1分钟的功夫...以后的事就慢慢考虑吧。嗯,还有就是,plist和png都是放在工程的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
大神说将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的~(其实本来就可以..)好,明天继续。