一、版本迁移中的问题

1.游戏元素Sprite、Label、Action等等的创建函数名都改为create。

2.函数的回调
callfunc_selector
callfuncN_selector
callfuncND_selector
callfuncO_selector
menu_selector
改为使用C++11的新特性std::bind和std::function配合使用:
CC_CALLBACK_0
CC_CALLBACK_1
CC_CALLBACK_2
CC_CALLBACK_3

MenuItemLabel *pauseItem = MenuItemLabel::create(
Label::create("pause", "Adobe Ming Std L", ),
this,
menu_selector(MyLayer::menuPauseCallback)); MenuItemLabel *pauseItem = MenuItemLabel::create(
Label::create("pause", "Adobe Ming Std L", ),
CC_CALLBACK_1(MyLayer::menuPauseCallback,this));

3.内部类名都去掉了前缀CC,使用 clone 替代 copy,单例类采用了 getInstance 和 destroyInstance,使用了 Ref 代替了 Object,这是因为cocos2dx官方的去OC化行为

4.模板容器
使用 cocos2d::Map<> 替代了 CCDictionary ;

使用 cocos2d::Vector<> 替代了 CCArray;

5.LabelTTF / LabelBMFont / LabelAtlas三种标签类被合并成一个类Label:

 //Label
Label* Label1 = Label::createWithSystemFont("","YouYuan",);
Label* Label2 = Label::createWithTTF("","YouYuan",);
Label* Label3 = Label::createWithBMFont("font/font.fnt","");

6.消息的处理方式都改为触发器模式:

         // 键盘消息可用
auto listenerKey = EventListenerKeyboard::create();
listenerKey->onKeyPressed = CC_CALLBACK_2(PlaneWarGame::onKeyPressed, this);
listenerKey->onKeyReleased = CC_CALLBACK_2(PlaneWarGame::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listenerKey, this);

7.将所有标记为废弃的API替换为新的API,消除项目编译过程中的警告。

二、移植到Android平台

最初移植到Android平台时是这个样子的:

原因是Android手机分辨率太大了,修改AppDelegate::applicationDidFinishLaunching() 函数即可:

 static cocos2d::Size largeSize = cocos2d::Size(,);
static cocos2d::Size designResolutionSize = cocos2d::Size(, ); bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("planeGame");
// mi3手机分辨率:1920x1080
glview->setFrameSize(largeSize.width,largeSize.height);
director->setOpenGLView(glview);
glview->setDesignResolutionSize(, , ResolutionPolicy::NO_BORDER);
} director->setContentScaleFactor(0.5f); // turn on display FPS
director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / ); // create a scene. it's an autorelease object
auto scene = PlaneWarMenu::scene(); // run
director->runWithScene(scene); return true;
}

改完之后,游戏就可以更好的适配Android屏幕了。

基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行的更多相关文章

  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的飞机大战游戏开发实例(下)

    在飞机大战游戏开发中遇到的问题和解决方法: 1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图: 查了很多资料,调试了很长时间,整个人 ...

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

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

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

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

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

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

  7. Canvas:飞机大战 -- 游戏制作

    Canvas:飞机大战 最开始我们要初始化信息,我们有五个状态:游戏封面,加载状态,运行状态,游戏暂停,游戏结束. 我们还需要  得分--score,生命--life. var START = 1;/ ...

  8. H5 canvas 实现飞机大战游戏

    首先看几张效果图: 上面三张图分别对应游戏的三种状态 ready,play,pause.体验一下 先介绍一下canvas 画图的原理,在这个游戏中的背景,飞机,子弹以及飞机被击中爆炸的效果都是一张张的 ...

  9. web版canvas做飞机大战游戏 总结

    唠唠:两天的时间跟着做了个飞机大战的游戏,感觉做游戏挺好的.说是用html5做,发现全都是js.说js里一切皆为对象,写的最多的还是函数,都是函数调用.对这两天的代码做个总结,希望路过的大神指点一下, ...

随机推荐

  1. 17 汽车服务工程 李腾飞 MP4

  2. js和java判断值为空的方式

    js方式判断值为空: name == ""; java方式判断值为空: name==null || name.trim().isEmpty();注:name==null要在前面,不 ...

  3. php常用算法和数据结构

    </pre><pre name="code" class="php"><?php /** * Created by PhpStor ...

  4. django中session的存储位置

    django-session 存放位置 设置session的保存位置,有三种方法: 保存在关系数据库(db) 保存在缓存数据库(cache) 或者 关系+缓存数据库(cache_db) 保存在文件系统 ...

  5. DSU on Tree浅谈

    DSU on tree 在之前的一次比赛中,学长向我们讲了了这样一个神奇的思想:DSU on tree(树上启发式合并),看上去就非常厉害--但实际上是非常暴力的一种做法;不过暴力只是看上去暴力,它在 ...

  6. wk_10.md

    Python检测和处理异常 try-except语句 try-except语句定义了进行异常监控的一段代码,并且提供了异常处理的机制,下面是使用的语法: try: # 可能抛出异常的语句,会一直执行, ...

  7. 浏览器地址栏运行JavaScript代码

    这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开头后跟要执行的语句.比如: javascript:alert('hello from ad ...

  8. 2038. [国家集训队]小Z的袜子【莫队】

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只 ...

  9. javascript 中isPrototypeOf 、hasOwnProperty、constructor、prototype等用法

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员. isPrototypeOf是用来判断要检查 ...

  10. 第一部分 OpenStack及其构成简介

    一.云计算   云计算是一种计算模型,它将诸如运算能力.存储.网络和软件等资源抽象成为服务,以便让用户通过互联网远程享用,付费的形式也如同传统公共服务设施一样.因需而定.提供方便.动态改变和无限的虚拟 ...