只有你足够强,别人才会和你讲道理。
文章: 278
浏览: 2,531,702
  • 博主:笨木头
  • 关注:Unity、Net Core、Blazor
  • 邮箱:musicvs@163.com
笨木头  2014-10-08 18:29     Cocos2d-x     阅读(96749)     评论(191)
转载请注明,原文地址: http://www.benmutou.com/archives/1856
文章来源:笨木头与游戏开发
 

实书早就印好了,只是因为遇上国庆,物流不发图书,只能等国庆之后才能陆续上架各大网店了~预计下周就能看到了。

由于之前2.0版本一书的光盘损坏的概率不够小,所以这次就不提供随书光盘了,而是采取官网下载的方式。

 

里可能提示得不够清楚,这里给各位读者提示一下,源码下载地址:http://www.phei.com.cn/module/zygl/zxzyindex.jsp

找到我这本书的两个文件,下载就可以了~

 

另外,我自己也传了一些资料到云盘,都是些旧版本的东西,现在不好找到(2017.05.11更新):

书籍项目:http://pan.baidu.com/s/1bRUWlK NDK R9B :http://pan.baidu.com/s/1i5hVILn cocostudio1.2.0:http://pan.baidu.com/s/1pLF92JL Cocos2d-x3.0:http://pan.baidu.com/s/1hsPrhGw Android-SDK离线包:http://pan.baidu.com/s/1o7MMOrS

 

后,感谢各位喜欢这本书的读者,所谓酒逢知己千杯少,知音难寻。

我能遇到这么多知音,实在是足够了。(小若:别傻了,他根本就不会喝酒,更不会弹琴~!)

 

于那些不喜欢我这本书的朋友,你们放心,我不会恨你们的。

只不过以后你们走路小心点,别让我在美国看见你。

 

 
确定

 

 

部分购买地址如下:

china-pub购买

当当网购买

亚马逊购买

 

 

 
191 条评论
  • 甲虫    2018-04-02 16:42:55

    你好请问,要是我对一个按钮使用了addTouchEventListenr注册监听事件,然后可以在监听函数里面找到这个按钮对象吗,如果可以要怎么做呢
    回复
    • 笨木头    2018-04-03 08:47:10

      对不起...我已经多年没有接触cocos引擎了,我凭印象猜测一下:
      1. 一般在事件触发时,会有一个叫做sender的object,这个就是触发事件的对象,也就是那个按钮
      2. 订阅事件的时候可以传递参数,在触发事件时可以获取到这个参数,你可以传递这个button对象进去

      我倾向于第一种,我印象中cocos是有sender参数的。
      回复
  • lengyue    2017-07-16 00:20:46

    木头,你代码我已经全部跑了一遍,全部可测, 但是代码基本上没有defensive check,移植的时候稍稍修改就是一堆问题。

    我最近在用你的塔防移植成一个自己设计的游戏(非塔防),所以移植的时候遇到很多问题,不继续在你网站上灌水啦,开个博客来填坑,大神你没事儿上去看看指导指导哈,谢谢谢谢。

    比如今天的问题。本来我打算有一个story的时间去根据坐标动态实现八方向角色的跑动动画。本来很简单的事情,但是还是有问题。绕来绕去又跑回C++的基础了。所以,当我觉得当把自己的游戏写完的时候,不仅cocos2d-x掌握了,c++也能学到一个。
    http://blog.163.com/leek_w/blog/#m=0&t=1&c=fks_085065093087081064087086082095085095081075084083083074085
    回复
    • 笨木头    2017-07-16 08:17:59

      加油,写博客是个好习惯(话说为什么不在CSDN写呢?)
      回复
  • lengyueswork    2017-07-13 23:54:00

    又发现塔防移植过程中bug一枚,mark
    hero的atk speed是从csv文件里读出来的,子弹的速度是hardcode为0.5.
    默认csv的atk speed是1s,子弹的atk speed是0.5s,那么子弹在0.5攻击完之后,hero需要额外等0.5s发射下一颗子弹。
    子弹中包含了aim的地址,在子弹arrive之后,会调用aim的hert函数减hp。

    那么问题来了,下面的一个scenaro会出现segv:
    1. 设置子弹的speed为1.5s,设置hero的speed为1s。
    2. 英雄会在第一颗子弹没有arrive时发射下一颗子弹,这样英雄会同时发射多颗子弹。
    3. 在aim死掉之后,还有子弹没有arrive。
    4. SegV。

    Root Cause:
    子弹存了aim的地址,这个地址会在aim死掉是被erase。当aim erease时,还有子弹正在飞,arrive之后,aim已经被free,继续调用会出现非法访问地址。作者已经加了defensive check,判断指针是否为null,然并卵。

    Solution:
    Option1: 只要子弹的速度不大于英雄一次攻击的速度,没问题。
    Option2: 子弹到达后,遍历一遍aim list,判断当前aim是否存活。

    用Option1吧先,mark mark,先这样吧,先这样吧,穷举各种rainy case没完没了,没完没了
    回复
    • 笨木头    2017-07-14 08:37:50

      哈哈哈,好喜欢你的专研精神,实话说,在创业公司待久了,连个像样的开发者都没有(没钱招),我现在真是求贤若渴啊(但是不招人不招人...)
      回复
  • lengyue    2017-07-07 22:10:50

    又发现作者bug一枚,fix花了两个小时, 啦啦啦。
    基于作者塔防逻辑的移植实现一个新的逻辑,英雄检测到小怪之后,移动到小怪的点,进行攻击,攻击之后,接着按指定的路径接着走到终点。

    Tollgate->heroMgr->checkAtkMonster->m_atkMonster->isDead->monsterList.eraseObject(m_atkMonster).

    之后发现英雄打死小怪之后,卡在那里不动。
    各种加log,发现monsterList在erase the monster of the died之后,在chooseAim里,monsterList的个数还是不变。

    也就是删除没有起作用。
    在checkAtkMonster的声明, checkAtkMonster(float ft, Vector monsterList), monsterList是copy的一个副本,应该声明成& monseterList).
    之后调试还是不起作用。后来发现monsterList至少被嵌套了4层,从顶层一路路改成引用,终于work啦。
    回复
    • 笨木头    2017-07-08 08:35:22

      哈哈哈,谢谢谢谢,动手能力强的读者什么的,最让人舒心了。
      回复
  • 222    2017-05-11 17:06:58

    cocos2dX 游戏开发之旅3.x的源码找不到了
    回复
    • 笨木头    2017-05-11 19:35:28

      抱歉,链接过时了。已更新最新下载链接。
      回复
      • ZZK    2017-10-09 19:47:52

        链接在哪里呀?
        回复
        • 笨木头    2017-10-09 19:59:21

          就是这篇文章的链接,已经是更新过的了。
          书籍项目:http://pan.baidu.com/s/1bRUWlK
          回复
          • ZZK    2017-10-14 17:06:19

            VS2017 没有找到extionsion库怎么办。。
            回复
            • 笨木头    2017-10-14 22:23:18

              如果是运行3.0的引擎,还是建议和书上一样的版本的vs(有点麻烦,抱歉),新版本的vs,对旧版本的引擎似乎不太友好,总是有点错误。
              回复
              • ZZK    2017-10-14 22:28:28

                那个运行显示 无法打开包括文件: “Macros.h”: No such file or directory 是什么情况
                回复
                • 笨木头    2017-10-15 08:51:10

                  好久没折腾这引擎了,我已经看不出是什么错误了╯︿╰
                  回复
          • wangyw    2018-01-21 11:06:43

            为什么下载失败呢
            回复
            • 笨木头    2018-01-22 08:32:11

              下载失败?是打不开网址,还是下载过程中出错呢?
              回复
  • 傻圆傻圆    2017-05-07 23:33:06

    - 。- helloworld 的我都不能运行 不知道为什么。。。
    回复
    • 笨木头    2017-05-08 08:46:08

      这,由于书籍对应的引擎版本比较老了,学习书上内容的话,建议用书上一致的版本(包括UI编辑器什么的),不然可能会有很多问题。
      但是HelloWorld也运行不了,我就有点尴尬了...
      回复
  • 林先生    2016-01-03 21:16:20

    14章,上篇,没有白色线框,加断点调试,反现应该是没有调用darw,反复对照你的源码,发现好多错漏的地方。希望作者调整。
    回复
    • 糟糕_树叶的mut    2016-01-04 12:24:21

      好,不过现在应该不会再重印了
      回复
    • 伊邪庭    2016-01-23 15:10:15

      在哪里调用draw
      回复
    • 黑精    2016-01-23 16:13:47

      在哪里调用draw
      回复
    • lengyueswork    2017-06-10 19:46:03

      是啊,我的版本是3.12, draw也没有被invoke

      我在PosBase.c PosBase::init(Point pos)里自己绘制,同样的效果喽

      bool PosBase::init(Point pos) {
      log("Enter PosBase init 1 parameter");
      bool bRet = false;

      do {
      setPos(pos);


      auto rect = DrawNode::create();
      rect->drawRect(Vec2(pos.x - 32, pos.y + 32), Vec2(pos.x + 32, pos.y - 32), Color4F(1.0, 0, 0, 1.0));
      this->addChild(rect);

      bRet = true;
      } while (0);

      return bRet;
      }

      测试works
      回复
      • lengyueswork    2017-06-11 11:30:52

        14章接着边读边调试,还是有问题,就是monster也会调用PosBase类,需要区分rect和circle。所以把图draw在tos和monster就可以了。
        画线也有问题,测试DrawPrimitives类已经不再支持,workaround是在TowerPosEditorLayer::loadConfigFile()通过DrawNode来划线。

        最后感谢一下作者:)
        回复
        • 笨木头    2017-06-11 12:43:24

          谢谢反馈,书籍引擎版本确实太旧了。
          回复
  • asdasd    2015-10-04 22:45:55

    我想问一下书里第四章的按钮监听事件,怎么我的代码在运行时总会出现写入某某某位置时发生访问冲突,而且左下方的窗口里this的值显示为null,是怎么回事?而且我运行书籍源码,游戏程序能打开,但是一点按钮就游戏卡死会跳到vs的窗口,左下角也是显示this。
    回复
    • 糟糕_树叶的mut    2015-10-05 09:09:25

      具体是哪一个源码?我运行看看,项目名称告诉我一下
      回复
      • asdasd    2015-10-05 10:01:40

        Chapter4_3_HelloUI
        回复
        • 糟糕_树叶的mut    2015-10-05 16:14:29

          我运行没问题吖..断点停在哪句代码了?
          回复
          • asdasd    2015-10-05 16:18:25

            CCScrollView.cpp,行393和HelloWorldScene.cpp,行81
            回复
            • 糟糕_树叶的mut    2015-10-05 21:13:15

              81行是这个东西:}你确定是这个么?
              回复
            • 糟糕_树叶的mut    2015-10-05 21:15:18

              另外,为什么你直接运行书里的项目也会报错?没修改任何东西?
              回复
              • asdasd    2015-10-05 21:23:33

                刚才从书里的网站重新下了一个cocostudio重新弄了一个helloui,结果没错了,重新用之前百度的cocostudiov1.4.0.1就会出错,晕.....
                回复
  • 陈玟予    2015-09-21 02:23:25

    网站做的好棒哦
    回复
  • 陈小予    2015-09-20 07:46:07

    网站棒棒哒
    回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发