quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景
创建完一个新项目之后,我们能够简单的看一看这个项目的文件组成,有这么一个文件层次结构
几个proj.*目录就不用说了,是相应的平台的解决方式,res专门存放我们的游戏资源。scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类。我们主要经常使用的就两个目录。res和scripts(我这不是废话吗)
好吧,还是再打开scripts目录看下。
该文件下有main.lua,它是程序lua脚本的启动文件
function __G__TRACKBACK__(errorMessage)
print("----------------------------------------")
print("LUA ERROR: " .. tostring(errorMessage) .. "\n")
print(debug.traceback("", 2))
print("----------------------------------------")
end require("app.MyApp").new():run() --启动后运行MyApp脚本
启动后,运行MyApp脚本,而且调用run函数
require("config")
require("framework.init") local MyApp = class("MyApp", cc.mvc.AppBase) function MyApp:ctor()
MyApp.super.ctor(self)
end function MyApp:run()
CCFileUtils:sharedFileUtils():addSearchPath("res/")
self:enterScene("MainScene")
end return MyApp
在run函数中。首先设置了文件资源的搜索路径。设置为res目录。接着进入第一个场景,也是脚本给我提供的MainScene.lua,在进入游戏画面前,程序还会初始化一些事情,能够看到第一行代码引入了config.lua。我们能够再接着打开config.lua文件
-- 0 - 不输出不论什么调试信息, 1 - 输出主要的调试信息, 2 - 输出具体的调试信息
DEBUG = 1 -- 设置是否在画面中显示渲染帧率等信息
DEBUG_FPS = true -- 设置是否输出内存占用信息,true为每10秒一次
DEBUG_MEM = false -- 是否加载过时的 API 定义
LOAD_DEPRECATED_API = false -- 是否加载短代码API
LOAD_SHORTCODES_API = true -- 屏幕方向
CONFIG_SCREEN_ORIENTATION = "landscape" -- 设计分辨率大小
CONFIG_SCREEN_WIDTH = 960
CONFIG_SCREEN_HEIGHT = 640 -- 自己主动缩放模式
CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH"
这里主要配置一下游戏的debug信息。FPS显示,屏幕方向。设计屏幕大小。以及适屏方案
有了这些的初始化,就会进入第一个场景了,再看下MainScene.lua
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end) function MainScene:ctor()
ui.newTTFLabel({text = "Hello, World", size = 64, align = ui.TEXT_ALIGN_CENTER})
:pos(display.cx, display.cy)
:addTo(self)
end function MainScene:onEnter()
end function MainScene:onExit()
end return MainScene
MainScene的ctor是构造函数,一旦我们new一个对象实例时就会调用ctor。所以它是必须有的,这里面主要做一些场景的界面布局等等,在MainScene中引擎仅仅画了一个文本在上面,就是上节中看到的Hello World。
在quick中,它弱化了层的地位,反而增强了场景的地位,我们在cocos2d-x中一般都是新建一个layer。游戏中的元素加入到这个layer中。而在quick中。往往我们为了简单些,会直接就加入到scene上。所以你会在samples中看到基本都是加在scene上。
好了。说了这么多,以下我们动手创建一个场景
在scenes目录中新建一个MyScene。仿照着MainScene.lua,我们敲点代码,
local MyScene = class("MyScene", function ()
return display.newScene("myscene")
end) function MyScene:ctor() end return MyScene
这样就算新建了一个场景。咱们还是加入点温馨的画面吧,显示一下cocos2d-x经典的画面,在后面的笔记着再来解释加入精灵文本这些。
在原来的Cocos2d-x项目中把那张HelloWorld.png图片复制一份到res目录下。
完整代码例如以下。
local MyScene = class("MyScene", function ()
return display.newScene("myscene")
end) function MyScene:ctor()
display.newSprite("HelloWorld.png", display.cx, display.cy):addTo(self) ui.newTTFLabel({text = "Hello, World", align = ui.TEXT_ALIGN_CENTER, x = display.cx, y = display.height*0.9}):addTo(self)
end return MyScene
然后我们改动启动的第一个场景,在MyApp.lua中。改动self:enterScene("myscene"),记住这当中的字符串是之前创建的那个场景时填写的字符串。假设不一致会找不到该场景的。最后我们用player模拟器跑一下看下效果。
哈哈。够经典,够温馨吧。仅仅是button没加,后面再说。大家也赶紧来试试吧。
如有错误之处,还请批评指出。
quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Cocos2d-x手机游戏开发与项目实践具体解释_随书代码
Cocos2d-x手机游戏开发与项目实战具体解释_随书代码 作者:沈大海 因为原作者共享的资源为UTF-8字符编码.下载后解压在win下显示乱码或还出现文件不全问题,现完整整理,解决全部乱码问题,供 ...
- Unity 游戏开发技巧集锦之创建透明的材质
Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示. ...
- Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质
Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质 创建部分光滑部分粗糙的材质 生活中,有类物体的表面既有光滑的部分,又有粗糙的部分,例如丽江的石板路,如图3-17所示,石板的表面本来是粗糙的, ...
- IDEA中使用Maven:通过模板项目来创建新工程(转)
首先自己有一个很完善的项目,并想通过这个项目做一个Demo事例项目: 例子1 如下图,在idea的terminal中敲入命令: mvn archetype:create-from-project 1 ...
- quick-cocos2d-x游戏开发【5】——创建菜单
一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包.一个是图片菜单.一个文本菜单. 一个.图片菜单ui.newImageMenuItem(params) 參数: image: 正 ...
- 基于HTML5的SLG游戏开发( 二):创建HTML5页面
HTML5游戏的开发过程中是在浏览器上进行运行调试的,所以首先我们需要建立一个html页面. 其中,我们把所有的canvas都放到一个viewporter(视图)里面,因此,在body中放置了一个id ...
- Android 在已有的项目上创建新的项目
原工程 右键Copy 再右键点Paste 改新的工程名
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
随机推荐
- tensorflow之tf.slice()
转载:https://www.jianshu.com/p/71e6ef6c121b https://www.cnblogs.com/chamie/p/11073363.html def slice(i ...
- 挖一挖python中的深浅拷贝问题
前几天在做面试题的时候,遇到一个与Python深浅拷贝的问题,今天总结出来一个方法,能够快速判断在对一个对象复制后,新对象与原来对象是否会互相影响的方法. 先抛出结论,然后我们对结论进行验证~~~ 先 ...
- 紫书 例题8-2 UVa 11605(构造法)
这道题方法非常的巧妙, 两层的n*n, 第一层第I行全是第I个国家, 第二层的第j列全是第j个国家.这样能符合题目的条件.比如说第1个国家, 在第一层的第一行全是A, 然后在第二层的第一行就有ABCD ...
- Maven下Flex国际化配置
之前写了flashbulid.initellij下的flex国际化配置,它们都是在本地打包发布的,那么我们的工程用maven管理了,需要自动发布.这时候如何修改flex的pom文件,来让它build的 ...
- POJ 1671
其实求的是BELL数,即前N个第二类斯特林数的和. 一首诗有n行,每一行有一种韵律,问这首诗总共可能有多少种韵律排列.如4行,则所有的15种情况为:aaaa, aaab, aaba, aabb, aa ...
- struts.xml中出现extends undefined package struts-default解决的方法
在struts.xml中出现extends undefined package struts-default,经过查阅资料原来是由于没有联网的缘故. 这样解决:在myeclipse中关联本地的dtd文 ...
- Hadoop自学笔记(一)常见Hadoop相关项目一览
本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误 ...
- 弹性ScrollView,和下啦刷新的效果相似 实现下拉弹回和上拉弹回
今天做了一个弹性ScrollView,和下啦刷新的效果类似,我想这个非常多需求都用的这样的效果 事实上这是一个自己定义的scrollView,上代码.这是我写在一个公共的组件包里的 package c ...
- 《从零開始学Swift》学习笔记(Day5)——我所知道的标识符和keyword
Swift 2.0学习笔记(Day5)--我所知道的标识符和keyword 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和keyword,一直没有好好的总结,就是这 ...
- h5缓存之数据库
/*======================================================= 函数功能:保存日志到本地数据库 ========================== ...