cocos2d lua 教程开发的游戏UI

-------------
新增文件夹...
新增文件夹
(多个标签用逗号分隔)
使用 cocos2d-x 和 Lua 快速开发游戏.pdf
cocos2d-x 提供了对 Lua 脚本的支持,让我们可以使用简单易懂的 Lua 语言进行游戏的快速开
发。在游戏中,涉及到用户界面构造与交互、场景管理、角色逻辑等内容,完全可以使用 Lua
完成,而不需要借助 C++。&br&
实际上,与 Corona SDK 这&#2% 使用 Lua 进行开发的游戏引擎相比,cocos2d-x + Lua 不
但有显著的性能优势,而且在扩展能力上
cocos2d-x 提供了对 Lua 脚本的支持,让我们可以使用简单易懂的 Lua 语言进行游戏的快速开
发。在游戏中,涉及到用户界面构造与交互、场景管理、角色逻辑等内容,完全可以使用 Lua
完成,而不需要借助 C++。&br&
实际上,与 Corona SDK 这样 100% 使用 Lua 进行开发的游戏引擎相比,cocos2d-x + Lua 不
但有显著的性能优势,而且在扩展能力上也不受任何限制。当然,最重要的是 cocos2d-x + Lua
可以完全发挥出 cocos2d-x 的功能,同时又保持了简单易用的特点,对于绝大多数游戏来说都
是首选的解决方案。&&
加载中...!如果长时间没有加载,请刷新页面
下载本文档需要登录,并付出相应积分()。
文件大小:781.49 KB
所需积分:& 10
相关资讯  — 
相关讨论话题  — 
浏览:13469次&& 下载:2次
上传时间: 08:54:50
同类热门文档
0次浏览 &24次下载
0次浏览 &4次下载
0次浏览 &12次下载
11872次浏览 &2次下载
0次浏览 &41次下载
6131次浏览 &2次下载
相关经验 -
& 0人评&0页
& 0人评&3页
& 0人评&15页
& 4人评&149页
& 0人评&150页
OPEN-OPEN, all rights reserved.扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
Cocos2d-x实战:Lua卷
国内首本系统论述Cocos2d-x之Lua开发的图书。基于Cocos2d-x 3.x最新版!Cocos2d-x创始人王哲作序。CocoChina、CSDN、51CTO、9Tech等6大专业社区10位知名专家联袂推荐!
定价:¥89.00
校园优惠价:¥76.54 (86折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
ISBN:1上架时间:出版日期:2015 年4月开本:16开页码:482版次:1-1
所属分类:
  《Cocos2d-x实战:Lua卷》是著名移动开发专家关东升、赵大羽倾力创作的“Cocos2d-x实战”典藏大系之一。全书首次系统介绍了Cocos2d-x之Lua开发的方法和技巧。全书基于Cocos2d-x最新版本论述!Cocos2d-x创始人王哲亲自作序。CocoChina、CSDN、51CTO、9Tech等6大专业社区9位知名专家联袂推荐!非常值得阅读、收藏。
《Cocos2d-x实战 Lua卷》是介绍Cocos2d-x Lua游戏编程和开发技术的书籍,介绍了使用Cocos2dx Lua中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台移植、程序代码管理、两大应用商店发布产品。全书分为六篇: 基础篇、进阶篇、数据与网络篇、优化篇、跨平台移植篇和实战篇,共23章。基础篇包括第1~8章,分别是Cocos2d-x Lua介绍、环境搭建、标签、菜单、精灵、场景、层、动作、特效、动画和用户事件。进阶篇包括第9~12章,分别是游戏音乐与音效、粒子系统、瓦片地图和物理引擎。数据与网络篇包括第13~15章,分别是数据持久化、基于HTTP的网络通信、Node.js与WebSocket网络通信。优化篇为第16章,主要介绍性能优化。跨平台移植篇包括第17章和第18章,分别是移植到Android平台和移植到iOS平台。实战篇包括第19~23章,分别是使用Git管理程序代码、项目实战――迷失航线手机游戏、为迷失航线游戏添加广告、发布放到Google play应用商店和发布放到苹果App Store。
关东升,国内知名iOS技术作家,iOS技术顾问,高级培训讲师,移动开发专家。担任51CTO社区iOS技术顾问,精通iOS、Android和Windows Phone及HTML5等移动开发技术。曾先后主持开发大型网络游戏《神农诀》的iOS和Android客户端开发,国家农产品追溯系统的iPad客户端开发,酒店预订系统的iOS客户端开发,金融系统的iOS、Windows Phone 及Android客户端开发。在App Store上发布数款游戏和应用软件,擅长移动平台的应用和游戏类项目开发。长期为中国移动研究院、云南移动、东软、方正科技、大唐电信、中石油、深圳康拓普、上海财富168、天津港务局等企事业单位授课。著有《iOS网络编程与云端应用最佳实践》、《iOS传感器应用开发最佳实践》、《iOS图形图像、动画和多媒体编程技术最佳实践》、《iOS开发指南――从零基础到App Store上架》、《交互设计的艺术――iOS 7拟物化到扁平化革命》等iOS专业图书。
第一篇基础篇
第1章准备开始
1.1本书学习路线图
1.2使用实例代码
第2章Lua语言基础
2.1环境搭建
2.1.1Lua编辑工具
2.1.2HelloLua实例测试
2.2标识符和保留字
2.2.1标识符
2.2.2保留字
2.3常量和变量
2.3.1常量
2.3.2变量
2.3.3命名规范
2.5Lua数据类型
2.5.1数据类型
2.5.2type函数
2.5.3数据类型转换
  王哲:这次关老师携手赵大羽先生倾力创作这套“Cocos2d-x实战”,共包括5册,分别是C++卷、JS卷、Lua卷、工具卷和CocoStudio卷,其中Lua卷与JS卷更是填补了国内市场的空白。这套图书系统地论述了Cocos2dx游戏开发理论与实践,涵盖了Cocos2d-x开发的几乎所有方面的知识领域。全部内容深入浅出,全面系统,对入门和进阶者都大有裨益,非常值得阅读,我在这里郑重推荐给大家。除了撰写图书,关老师还开设了超过400课时的Cocos引擎在线课程,我很敬佩他的专业精神,也非常感谢他一直以来对Cocos2d-x的支持。关老师的书籍和在线课程在业内有相当高的人气,相信能为许多想要进入Cocos开发世界的朋友提供极大的帮助。Tom Bradley(71squared):A fantastic new book has just been launched for all you Chinese Cocos2D developers! It’s an in depth look at all the tools you’ll need to make a successful game. Be sure to check it out.Well done Mr.Guan!
  卞安-红孩儿:目前市面上Cocos2d-x教材很多,但缺乏体系化介绍工具化开发工作流程的指导书,赵老师的这本书详尽的介绍了基于Cocos2d-x进行游戏开发所必备的工具软件,对于游戏开发者提高工作效率将有极大的帮助和实用指导。
  Cocos引擎中文官网/CocoaChina社区:基于Cocos引擎开发的产品已经占据移动游戏市场第一名的位置,Cocos仍继续吸引更多的开发者投入其中。著名移动开发专家关东升老师创作的这套“Cocos2d-x实战”系列,全面系统地论述了Cocos2d-x开发的理论与实践。书中构建了最全面的Cocos2d-x学习体系:基础知识→核心技术→实战特训,是初学者极佳的学习路线!堪称Cocos2d-x开发入门指导的百科全书!&
  CSDN社区:关东升老师具有多年的Cocos2d-x教学经验,他的教学视频、技术书籍与技术博客都深受欢迎。“Cocos2d-x实战”系列图书是关东升老师倾力创作的技术经典,书中融汇了多年的教学实践与应用开发经验,凝练了大量贴合开发者实际工作需求的要点。如果您是一位渴望通过学习Cocos2d-x进入游戏开发领域的程序员,本书应当成为您必读的领航之作。
  畅游2035?9ria社区:“Cocos2d-x实战”是关东升老师用创业者的心态撰写的技术图书,并全面超越了同类图书!经过10个月的磨练,历经Cocos2d-x 众多版本的变化,关老师及其团队不断修改案例、程序,终于完美定稿。借助本书,开发者可以快速进行项目实战,轻松完成“做中学”的体验。
  51CTO总裁熊平:时至今日,移动互联网改变了人们的生活方式,同时也改变了IT产业的格局,手机游戏开发无疑成了移动开发领域最火热的技术方向。“Cocos2d-x实战”系统论述了Cocos2d-x全方位的游戏开发知识与技能。无论您是就业者还是创业者,您都会通过本书获益匪浅。
系列图书推荐 ¥89.00¥71.20
作者其它作品¥99.00¥76.23
同类热销商品¥108.00¥86.40
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved1146人阅读
游戏开发(1)
本站文章均为原创,转载务必在明显处注明:
转载自&原文链接:&
&本博客最新动态!及时将最新博文通知您!
对于游戏公司而言,采用游戏脚本lua、python等进行开发也很常见,但是很多童鞋对脚本并没有很熟悉的概念,本篇则向大家简单介绍脚本的用途以及在Cocos2dx基础用法;
Lua和python这些详细介绍的话,请不太熟悉的童鞋自行百度百科哈,那么对于lua和python则是两个常用的脚本语言,lua相对于python而言,lua比较轻量级罢了,而其他区别就不多说了,但是为什么本章要讲解lua的原因则有两点,首先第一:cocos2dx 游戏引擎内嵌lua,第二点:自从“令人愤怒的小鸟”火起来之后,国内很多都偏向于使用lua了=。 =
那么对于脚本的用途这里也大概说两点:
1. &脚本在手游中是类于“大脑”的功能,所有游戏相关的逻辑代码一般都放在脚本中,而客户端(前台)的代码都则属于“肢体”,也可以说是“播放器”,作用只是用户展示出UI界面的功能;那么脚本的作用那么不仅仅如此,比如地图数据等都可以利用脚本使用;
2. 脚本在手机网游中的作用尤为重要,比如一款网游“Himi”没有使用脚本,如果“Himi”1.0版本在发布后突然发现客户端出现一些棘手的bug需要修复,那么你想修改那么也要等待再次更新客户端重新提交发布才可以解决,这样会流失一大批用户,而且游戏每次更新也会流失掉部分用户,这是肯定的;但是如果“Himi”这款网游使用脚本的话,那么解决此类问题很eazy,比如我在“Himi”游戏中的逻辑代码都放在脚本a.lua 中,那么如果a.lua逻辑中哪里出现了问题,我们直接可以将修复后的a.lua脚本更新至服务器中,因为一般脚本都会定义version号,比如a.lua有bug的version:1.0,那么我们修复后的a.lua
version改成1.1,当用户每次启动游戏的时候,客户端都会将脚本的version与服务器脚本version做对比,当server端脚本version号比当前脚本新,那么自动下载并覆盖当前脚本,OK,问题解决;不仅仅如此,比如游戏中做个活动呀,换个图片呀等等都可以即使更新,而不是每次修改前端代码都要重新发布新的游戏版本,造成一些损失!
OK,不再多说了,下面我们来介绍在Cocos2dx中对于lua脚本的一些简单使用,首先我们通过新建一个Cocos2dx-lua模版项目,默认此模版中有个示例,童鞋们可以直接运行项目看效果,但是大家可能会郁闷在class中完全找不到任何相关的代码?!?那就对了,因为所有逻辑代码都放置在了lua脚本中,项目启动后直接解析的一个名称为hello.lua的脚本!
打开项目的Resources仔细找下,有没有发现有 hello.lua 合hello2.lua两个脚本文件?!OK,就是这里拉。 那么对于cocos2dx_lua demo的例子脚本我这里不多说比较容易,但是肯定不太熟悉的童鞋比较疑惑,那么Himi这里重新整理了一份简单的示例脚本代码,大家可以直接将如下代码直接复制到hello.lua中看效果;代码如下:
-- 包含hello2这个脚本
基本上调用的cocos2dx函数和类的时候就是以cocos2d.*这样子来用
注意2:function 关键字定义函数,end结束函数
cocos2d.CCLuaLog(&脚本hello开始运行...
.. myadd(3, 5))
创建一个Scene
sceneForWorld
= cocos2d.CCScene:node()
创建一个Layer
layerForWorld
= cocos2d.CCLayer:node()
sceneForWorld:addChild(layerForWorld)
创建一个精灵
spriteForWorld&
= cocos2d.CCSprite:spriteWithFile(&Icon.png&)
layerForWorld:addChild(spriteForWorld)
获取屏幕宽高
screenSize=cocos2d.CCDirector:sharedDirector():getWinSize()
设置精灵坐标
spriteForWorld:setPosition(cocos2d.CCPoint(screenSize.width*0.5,screenSize.height*0.5))
设置精灵缩放2倍
spriteForWorld:setScale(2)
添加一个CCLabelTTF&&& (!!!!!!备注!!!!!!)
myLableTTF
=cocos2d.CCLabelTTF:labelWithString(&Himi-
Lua 基础&,&Helvetica-Bold&,24)
myLableTTF:setPosition(cocos2d.CCPoint(screenSize.width*0.5,screenSize.height*0.5+100))
sceneForWorld:addChild(myLableTTF)
添加一个CCLabelTTF
myLableTTF2
=cocos2d.CCLabelTTF:labelWithString(&上面icon跟随用户触屏位置&,&Helvetica-Bold&,24)
myLableTTF2:setPosition(cocos2d.CCPoint(screenSize.width*0.5,screenSize.height*0.5-100))
sceneForWorld:addChild(myLableTTF2)
@@@@@@@@@@触摸事件
--开启触摸
layerForWorld:setIsTouchEnabled(true)
注册触摸事件
layerForWorld.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHBEGAN,
&btnTouchBegin&)
layerForWorld.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHMOVED,
&btnTouchMove&)
layerForWorld.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHENDED,
&btnTouchEnd&)
touch handers
pointBegin
btnTouchBegin(e)
&&&&cocos2d.CCLuaLog(&btnTouchBegin&)
pointMove = v:locationInView(v:view())
&&&&pointMove
= cocos2d.CCDirector:sharedDirector():convertToGL(pointMove)
&&&&spriteForWorld:setPosition(cocos2d.CCPoint(pointMove.x,pointMove.y))
btnTouchMove(e)
&&&&cocos2d.CCLuaLog(&btnTouchMove&)
pointMove = v:locationInView(v:view())
&&&&pointMove
= cocos2d.CCDirector:sharedDirector():convertToGL(pointMove)
&&&&spriteForWorld:setPosition(cocos2d.CCPoint(pointMove.x,pointMove.y))
btnTouchEnd(e)
&&&&cocos2d.CCLuaLog(&btnTouchEnd&)
@@@@@@@@@@触摸结束
--动态小狗
= cocos2d.CCDirector:sharedDirector():getWinSize()
FrameWidth
FrameHeight
textureDog
= cocos2d.CCTextureCache:sharedTextureCache():addImage(&dog.png&)
= cocos2d.CCSpriteFrame:frameWithTexture(textureDog, cocos2d.CCRectMake(0, 0, FrameWidth, FrameHeight))
= cocos2d.CCSpriteFrame:frameWithTexture(textureDog, cocos2d.CCRectMake(FrameWidth*1, 0, FrameWidth, FrameHeight))
= cocos2d.CCSprite:spriteWithSpriteFrame(frame0)
spriteDog:setPosition(cocos2d.CCPoint(100,
winSize.height/4*3))
layerForWorld:addChild(spriteDog)
animFrames
= cocos2d.CCMutableArray_CCSpriteFrame__:new(2)
animFrames:addObject(frame0)
animFrames:addObject(frame1)
= cocos2d.CCAnimation:animationWithFrames(animFrames, 0.5)
= cocos2d.CCAnimate:actionWithAnimation(animation, false);
spriteDog:runAction(cocos2d.CCRepeatForever:actionWithAction(animate))
--自定义函数
prForHimi()
&&&&cocos2d.CCLuaLog(&reFresh
function&)
&&&&--取消选择器
&&&&--cocos2d.CCScheduler:sharedScheduler():unscheduleScriptFunc(&prForHimi&)
--使用选择器进行函数更新
--cocos2d.CCScheduler:sharedScheduler():scheduleScriptFunc(&prForHimi&,
--循环语句
i=0,4,1 do
j=0,4,2 do
&&&&&&&&cocos2d.CCLuaLog(&for
避免内存泄漏
collectgarbage(
&setpause&,
collectgarbage(
&setstepmul&,
播放背景音乐
--CocosDenshion.SimpleAudioEngine:sharedEngine():playBackgroundMusic(&background.mp3&,
--CocosDenshion.SimpleAudioEngine:sharedEngine():preloadEffect(&effect1.wav&)
run整个scene
cocos2d.CCDirector:sharedDirector():runWithScene(sceneForWorld)
cocos2d.CCLuaLog(&脚本hello正常执行结束...
.. myadd(3, 5))
运行效果图如下:
对于Himi上面给出的自己修改后的代码注视写的狠清楚了 =。 = 所以不多加赘述,但是Himi这里需要还要详细说一点;
脚本lua等一般都示通过中间层(解析)进行与前端代码(Cocos2dX封装的引擎类库)交互,所以很多方法名称可能发生了改变,那么对于不太熟悉的童鞋我们如何下手?
OK,如刚才的代码中有个“备注”,不知道细心童鞋们看到没有,这里是添加了一个CCLabelTTF ,假如我们不知道它的构造函数是否有修改,或者说参数忘记都是什么了,那么请打开你项目的libs文件夹,然后打开lua文件夹,继续打开cocos2dx_support文件夹找到 LuaCocos2d.cpp文件打开,(注意这个文件代码很多,打开较慢)然后你会看到很多方法的定义与实现!
那么假如我们来找 CCLabelTTF的构造方法,那么搜一下如下语句:
tolua_beginmodule(tolua_S,&CCLabelTTF&);
你将发现此类下方一大批类似的代码:
没错这里就是此类的所有是lua-cocos2dx之间的转换函数定义,比如常用的CCLabelTTF构造函数:
tolua_function(tolua_S,&labelWithString&,tolua_Cocos2d_cocos2d_CCLabelTTF_labelWithString01);
此函数第一参数大家不用理会,第二个参数表示我们使用cocos2d/x时调用的函数名称,后面则是lua-cocos2dx之间的转换函数实现代码,大家可以继续搜索第三个参数或者按住command然后点击第三个参数找到其函数实现代码:
TOLUA_DISABLE_tolua_Cocos2d_cocos2d_CCLabelTTF_labelWithString01
tolua_Cocos2d_cocos2d_CCLabelTTF_labelWithString01(lua_State* tolua_S)
&tolua_Error
&&&&&!tolua_isusertable(tolua_S,1,&cocos2d::CCLabelTTF&,0,&tolua_err)
&&&&&!tolua_isstring(tolua_S,2,0,&tolua_err)
&&&&&!tolua_isstring(tolua_S,3,0,&tolua_err)
&&&&&!tolua_isnumber(tolua_S,4,0,&tolua_err)
&&&&&!tolua_isnoobj(tolua_S,5,&tolua_err)
label = ((const
tolua_tostring(tolua_S,2,0));
fontName = ((const
tolua_tostring(tolua_S,3,0));
fontSize = ((float)&
tolua_tonumber(tolua_S,4,0));
&&&cocos2d::CCLabelTTF*
tolua_ret = (cocos2d::CCLabelTTF*)& cocos2d::CCLabelTTF::labelWithString(label,fontName,fontSize);
&&&&tolua_pushusertype(tolua_S,(void*)tolua_ret,&cocos2d::CCLabelTTF&);
tolua_lerror:
tolua_Cocos2d_cocos2d_CCLabelTTF_labelWithString00(tolua_S);
//#ifndef TOLUA_DISABLE
在这里看到此函数转换过程,并可以很清楚看到:
cocos2d::CCLabelTTF*
tolua_ret = (cocos2d::CCLabelTTF*)& cocos2d::CCLabelTTF::labelWithString(label,fontName,fontSize);
到这里大家会很清楚需要的参数都是哪些,如果还不清楚,继续按住Command然后点击labelWithString进入cocos2dx引擎代码&CCLabelTTF.cpp中的此函数实现啦!
可能这部分有童鞋看得比较迷茫 =。 = 那么Himi来简化这些复杂来说:
解析lua脚本中的一句代码-&通过解析层代码-&将其转换并转到前端代码进行使用
那么当然此过程也可逆:
前端代码-&通过解析层代码-&使用lua脚本中东东
这里由于Himi对cocos2dx 中的lua还没有深入了解,所以不知是否过程可逆;
OK,基本就是这样,对于脚本的熟悉,主要还是在公司进行使用然后慢慢熟悉和熟练掌握的,本章主要需要童鞋们记住的是脚本的概念和作用!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15053次
排名:千里之外
转载:29篇
(18)(16)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'Cocos2d-x Lua热门城市:
Cocos2d-x Lua招聘相关信息
Cocos2d-x Lua友情提醒
智联Cocos2d-x Lua招聘信息页面为您提供:更新、更全的Cocos2d-x Lua招聘信息,除此之外还有更多关于Cocos2d-x Lua相关职位的招聘信息和其他热门职位信息。智联招聘秉承于满足您的求职需求,让您更快、更满意的找到Cocos2d-x Lua的工作。
热门职位招聘学习Cocos2d-x Lua:实现类的原理 - cocos2dx技术 - 泰课在线 - 国内专业的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho

我要回帖

更多关于 libcocos2dlua.so破解 的文章

 

随机推荐