咳咳~跟着大神的教程学做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
大神说将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的~(事实上本来就能够..)好。明天继续。