Cocos2d-x 3.X手游开发实例详解

当前位置:首页 > 计算机/网络 > 图形图像 多媒体 > Cocos2d-x 3.X手游开发实例详解

  • 版 次:1
  • 页 数:
  • 字 数:
  • 印刷时间:2014年09月01日
  • 开 本:16开
  • 纸 张:轻型纸
  • 包 装:平装
  • 是否套装:否
  • 国际标准书号ISBN:9787121239984
作者:于浩洋 著出版社:电子工业出版社出版时间:2014年09月 
编辑推荐

# 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法

# 以热门游戏2048、卡牌为例,完整再现手游的开发过程
# Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐
# 知识点深入浅出,实例丰富,代码完备

# 线上交流平台,及时答疑解惑


推荐购买:

游戏设计要则探秘(全彩)

云计算网络珠玑

实战Java虚拟机——JVM故障诊断与性能优化

大型分布式网站架构设计与实践

老码说编程之玩转Swift江湖

设计之下——搜狐新闻客户端的用户体验设计(全彩)

人本游戏——游戏让世界更美好


 
内容简介

Cocos2d-x 3.X手游开发实例详解》以Cocos2d-x V3.0 系列版本为框架,通过实例讲解手机游戏的开发知识和方法,着重通过实例提高读者的开发动手能力。涉及的内容包括:环境搭建、交叉编译以及打包部署;Cocos2d-x数据类型和基本概念的使用,如场景、导演、精灵等;使用Cocos2d-x 创建用户界面,如文本、菜单、滚动框等基本控件,以及一些扩展控件的使用;使用Cocos2d-x 创建动作,比如让精灵移动、跳跃、旋转,以及如何创建按顺序或同时进行的动作;使用Cocos2d-x 播放、停止、暂停、继续播放背景音乐和音效;Cocos2d-x 使用的触摸事件机制;在游戏中存储数据的几种方式;使用HTTPSocketsWebSockets 进行网络编程;在游戏中使用物理引擎Box2D、使用瓷砖地图、使用CocosBuilder 制作游戏界面等;Cocos2d-x 中的纹理和动画。最后通过两个完整的游戏开发实例讲解使用Cocos2d-x 开发游戏的全过程。

Cocos2d-x 3.X手游开发实例详解》实例丰富,代码完备,知识点清晰简洁。《Cocos2d-x 3.X手游开发实例详解》所有实例均提供完整代码下载,书后附有代码清单概要,非常方便读者查找使用。此外作者还将Cocos2d-x 3.X 各版本间的区别用实例做了详细说明,且将在博客不断更新。

Cocos2d-x 3.X手游开发实例详解》适合对Cocos2d-x 感兴趣及有志于学习和从事移动平台游戏开发的读者阅读参考。

作者简介

于浩洋:曾就职于*、人人网,从事多年互联网产品开发工作。守望科技工作室创始人,我博轻游科技有限责任公司CTO,参与主导多款卡牌手游的开发与发行,有丰富的手游开发经验。

目  录
第1章 准备 1
1.1 Cocos2d-x简介 1
1.2 Cocos2d-x架构和目录结构 6
1.3 环境搭建 7
1.3.1 Windows开发环境搭建 7
1.3.2 Mac开发环境搭建 11
1.3.3 创建新项目 12
1.3.4 在Android上调试项目 14
1.3.5 打包APK文件 22
第2章 Cocos2d-x常用数据和方法 23
2.1 C++数据类型 23
2.2 Cocos2d-x封装的数据类型 24
2.2.1 布尔型Bool的使用 24
2.2.2 整型Integer的使用 25
前  言
记得第一次接触移动互联网是在2008年左右,当时互联网应用相当普及,市场竞争进入红海,绝大多数人认为移动互联将成为下一个增长点,是很大的蓝海,社会将进入3G时代。大到三大运营商和一线互联网公司,小到小公司和个人开发者都想进入移动互联,从3G大蛋糕中分到一块利益。转眼几年过去,正如当时预料的那样,移动互联已经深入人们的生活当中,4G也悄悄来临。在移动互联的发展过程中,苹果公司起到了不可磨灭的作用,因为它发布了能承载移动互联功能的新概念智能手机iPhone。于是乎,诞生了一大批移动应用和移动游戏的开发商和个人开发者。其中以《疯狂的小鸟》为代表的第一批手机游戏进入人们的视线并大获成功,之后手机游戏以比雨后春笋还疯狂很多倍的速度成长起来。各种类型的游戏出现在市场中,例如《我叫MT》《大掌门》《找你妹》及腾讯的天天游戏系列。
在手机游戏快速成长的过程中,手机游戏开发框架也跟着发展起来,其中最著名的就是Cocos2d家族,Cocos2d-iphone、Cocos2d-js、Cocos2d-java等,其中Cocos2d-iphone使用数最多。但是Cocos2d-iphone是用Objective-C开发的,只能用于开发iPhone平台的游戏,如果想发布到Android平台,就要使用另外一种语言,几乎重写所有代码。于是,中国有位叫王哲的“大神”,使用C++重新实现了一遍Cocos2d-iphone的API,使用C++开发的游戏不仅效率高,也能发布到iOS、Android、in、Linux等多个平台,真正实现了编写一次、多平台运行的目的。
媒体评论

手游是个很有前景的行业,同时也是个竞争异常激烈的行业。为了在竞争中立于不败之地,必须有可靠先进的技术和技术人才。此书以Cocos2d-x 3.0为基础,从入门知识到高级进阶,详细讲解了手游开发的十几个大模块,每个大模块又包含了许多小的知识点,是提高技术水平不可多得的一本书。

林顺 触控科技高级技术总监,Cocos2d-js作者

本书是由从业多年的开发者于浩洋所著,多年的互联网巨头从业经验使得作者形成了比较扎实的知识体系。书中对基础知识娓娓道来,同时全书包括多个实例讲解。大量的实例,让所有知识深入浅出,不论你是有从业经验的中级开发者还是初次使用Cocos2d-x的小白用户,本书都是不错的选择。

杨雍 泰然网创始人,Cocos2d-x技术推广总监

在线试读部分章节

14.7 添加战斗流程

战斗是卡牌游戏的灵魂,有了喜欢的英雄,给英雄装备一套好的装备,这时不拿出来用用多没意思啊!战斗让你的英雄久经沙场,变得更强更伟大。该游戏中的战斗流程是,单击战争菜单,首先进入世界地图,如图14-5所示,单击世界地图上的某个势力范围,进入该势力范围的推图,再单击其中一个推图进入战斗场景。

世界地图通过GameMapLayer实现。在GameMapLayer初始化中,添加一个ScrollView,用来滚动显示隐藏的地图:

ui::ScrollView* dragPanel = ui::ScrollView::create();

设置dragPanel的大小为窗口大小:

Size widgetSize =Director::getInstance()->getWinSize();

dragPanel->setSize(widgetSize);

设置dragPanel的内容大小为640×1920

Size backgroundSize = Size(640,1920);

dragPanel->setInnerContainerSize(backgroundSize);

设置位置添加到场景中:

dragPanel->setPosition(ccp((widgetSize.width - backgroundSize.width) / 2, (widgetSize.height - backgroundSize.height) / 2 +
(backgroundSize.height - dragPanel->getContentSize().height) / 2));

m_pLayer->addChild(dragPanel);

世界地图是用CocosStudio制作的UI,这里省略详细的制作过程,因为上一个实例已经详细讲解了CocosStudio怎制作UI。我们把UI添加到dragPanel中:

Layout* map_root = dynamic_cast(GUIReader::shareReader()->widgetFromJsonFile("GameMapLayer_1.json"));

dragPanel->addChild(map_root);

然后定义一个数组,代表势力范围的名称:

string str[21] = {"yananfu","shijiachun","shimiao","yezhulin", "changzhou","hunxian","erlongsan","qingzhou","jiangzhou","liangsan","zhujiazhuang","beijing","chengtou","dongpingfu","dongjing","liangsan","jizhou","shuzhou","hangzhou","guanfu"};

通过一个for循环遍历UI地图中的Button,并为Button添加名称和回调函数:

for (unsigned int i = 0; i<20; ++i)

{

Button* button = (Button*)(map_root->getChildByTag(i));

button->setTitleFontSize(32);

button->setTitleColor(Color3B(255,0,0));

button->setTitleText(str[i].c_str());

button->addTouchEventListener(this,toucheventselector (GameMapLayer::buttonTouchEvent));

}

在回调函数buttonTouchEvent中,先获取单击Buttontag和现在的等级:

voidGameMapLayer::buttonTouchEvent(Ref *pSender, TouchEventType type)

{

Size winSize =Director::getInstance()->getWinSize();

Sprite *bg=Sprite::create("tipbg.png");

Button* pHome=(Button*)pSender;

int tag=pHome->getTag();

int level=GameData::shareGameData()->mlevel;

switch (type)

{

case TOUCH_EVENT_BEGAN:

break;

case TOUCH_EVENT_MOVED:

break;

case TOUCH_EVENT_ENDED:

....进行操作....

break;

case TOUCH_EVENT_CANCELED:

break;

default:

break;

}

}

然后在TOUCH_EVENT_ENDED中判断等级是否大于等于tag*5-10,如果是就进入推图场景:

if(level>=tag*5-10)

{

FightLayer *info=new FightLayer(tag);

addChild(info);

}

这时,运行程序,单击世界地图中最上面的势力,进入推图场景,如图14-6所示。



 Cocos2d-x 3.X手游开发实例详解下载



发布书评

 
 

 

PDF图书网 

PDF图书网 @ 2017