在飞机大战游戏开发中遇到的问题和解决方法:

1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图:

查了很多资料,调试了很长时间,整个人都要崩溃了。

最后发现引擎中CCMenu::itemForTouch函数中有遍历子节点的行为,但是循环中没有判断子节点类型是否为CCMenuItem。如图:码,这样一来,加入到pMenu中的图片精灵被当作菜单项取了出来使用,导致报错。老版本的果然又不完善的地方,整个人都不好了...
果断修改引擎里的源只要在遍历中使用子节点之前判断一下是否为CCMenuItem类型即可,如图:

2.在开发的时候,难免要用到键盘消息来测试程序功能,但是找了很久发现引擎中没有为我们传出键盘消息。所以...果断修改源码。

步骤一:在CCLayer类声明中public下添加virtual void processWin32KeyPress( UINT message, WPARAM wParam, LPARAM lParam) {}
步骤二:在CCEGLView类声明中private下添加变量CCLayer *m_pLayWin32Key;在public下添加函数void SetWin32KeyLayer(CCLayer *pLayer){m_pLayWin32Key = pLayer;}
步骤三:在CCEGLView构造函数中初始化CCLayer(NULL);WindowProc函数最开始添加if (NULL != m_pLayWin32Key){m_pLayWin32Key->processWin32KeyPress(message, wParam, lParam);}
步骤四:重新生成libcocos2d;
步骤五:在继承于CCLayer类的子类的构造或者初始化函数中添加CCDirector::sharedDirector()->getOpenGLView()->SetWin32KeyLayer( this );
步骤六:在子类中重写processWin32KeyPress函数处理键盘消息;
步骤七:子类的析构或析构之前的函数中添加CCDirector::sharedDirector()->getOpenGLView()->SetWin32KeyLayer( NULL)。
这样我们就可以随心所欲地处理消息了。

3.在用键盘方向键控制飞机移动时,发现总有些卡顿。其实是这种机制有问题。
解决方法:不要再处理消息时移动飞机,而是在处理消息时仅仅设置运动方式,在回扫刷新函数中,根据飞机的运动方式去移动飞机。

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)的更多相关文章

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

    接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 bool PlaneWarGame::init() { bool bRet = fals ...

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

    最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...

  3. 基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行

    一.版本迁移中的问题 1.游戏元素Sprite.Label.Action等等的创建函数名都改为create. 2.函数的回调callfunc_selectorcallfuncN_selectorcal ...

  4. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  5. 用Javascript模拟微信飞机大战游戏

    最近微信的飞机大战非常流行,下载量非常高. 利用JS进行模拟制作了一个简单的飞机大战[此源码有很多地方可以进行重构和优化] [此游戏中没有使用HTML5 任何浏览器都可以运行]. 效果图: 原理:利用 ...

  6. 11.pygame飞机大战游戏整体代码

    主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...

  7. "飞机大战"游戏_Java实现_详细注释

    1 package cn.xiaocangtian.Util; import java.awt.Frame; import java.awt.Graphics; import java.awt.Ima ...

  8. 一、利用Python编写飞机大战游戏-面向对象设计思想

    相信大家看到过网上很多关于飞机大战的项目,但是对其中的模块方法,以及使用和游戏工作原理都不了解,看的也是一脸懵逼,根本看不下去.下面我做个详细讲解,在做此游戏需要用到pygame模块,所以这一章先进行 ...

  9. "飞机大战"游戏_Java

    1 package cn.xiaocangtian.Util; import java.awt.Frame; import java.awt.Graphics; import java.awt.Ima ...

随机推荐

  1. 2、Dubbo-核心概念

    dubbo核心概念 2.1).简介 Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能.轻量级的开源Java RPC框架, 它提供了三大核心能力:面向接口的远程方法调用 ...

  2. Kali-linux使用Nessus

    Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它.该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库.Nessus不同于传统的漏洞扫描软件,Nessus可同时在 ...

  3. Kali-linux其他信息收集手段

    上面介绍了使用不同的工具以操作步骤的形式进行了信息收集.在Kali中还可以使用一些常规的或非常规方法来收集信息,如使用Recon-NG框架.Netdiscover工具和Shodan工具等.本节将介绍使 ...

  4. 【问题】 cookie 不保存特殊字符 解决办法

    遇到的问题: 在做项目,用geolocation 获取经纬度,格式如(23.1133,113.2552) ,想保存到cookie中备用.但读取cookie出来之后发现逗号变成了  %2c. 找到的原因 ...

  5. 框架 Hibernate

    Hibernate 在test01右键新建其他找到hibernate文件夹下的Hibernate Configuration File(cfg.xml) <?xml version=" ...

  6. Gradle Goodness: Copy Files with Filtering

    Gradle Goodness: Copy Files with Filtering Gradle's copy task is very powerful and includes filterin ...

  7. java alibaba fastJson 遍历数组json

    import java.util.*; import com.alibaba.fastjson.*; public class Test { public static void main(Strin ...

  8. ArrayList两个对象之间的赋值

    List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList&l ...

  9. Datatable报错Uncaught TypeError: Cannot read property 'cell' of undefined

    使用Datatables时,报出错误 仔细想想,是因为我在columns里加入了id,并设置visible:false 但是却没在下面的HTML部分多加一个 th 虽然我觉得因为id是隐藏的,不用加上 ...

  10. CABasicAnimation使用总结

    CABasicAnimation使用总结 实例化 使用方法animationWithKeyPath:对 CABasicAnimation进行实例化,并指定Layer的属性作为关键路径进行注册. //围 ...