• 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的~(事实上本来就能够..)好。明天继续。

  • 相关阅读:
    RabbitMq、ActiveMq、ZeroMq 和 kafka 比较
    Mysql:The table‘xxxx’is full
    忘记了MariaDB root密码的解决办法
    在CentOS 7 MySQL / MariaDB
    SQL批量删除与批量插入
    org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI [/AssetRepair/assetRepairController/test.do] in DispatcherServlet with name 'assetrepair'
    <spring:message> 标签
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    实现JMS规范的ActiveMQ
    常见消息队列协议总结
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7114772.html
Copyright © 2020-2023  润新知