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没加,后面再说。大家也赶紧来试试吧。

如有错误之处,还请批评指出。

时间: 2024-11-10 21:47:54

quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景的相关文章

Cocos2d-x手机游戏开发与项目实践具体解释_随书代码

Cocos2d-x手机游戏开发与项目实战具体解释_随书代码 作者:沈大海  因为原作者共享的资源为UTF-8字符编码.下载后解压在win下显示乱码或还出现文件不全问题,现完整整理,解决全部乱码问题,供大家下载. 下载地址:http://download.csdn.net/detail/oyangyufu/7665049

Cocos2d-x手机游戏开发与项目实践详解_随书代码

Cocos2d-x手机游戏开发与项目实战详解_随书代码 作者:沈大海  由于原作者共享的资源为UTF-8字符编码,下载后解压在win下显示乱码或还出现文件不全问题,现完整整理,解决所有乱码问题,供大家下载. 下载地址:http://download.csdn.net/detail/oyangyufu/7665049 Cocos2d-x手机游戏开发与项目实践详解_随书代码

quick-cocos2d-x学习笔记【2】——项目结构分析、创建新场景

创建完一个新项目之后,我们可以简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*文件夹就不用说了,是对应的平台的解决方案,res专门存放我们的游戏资源,scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类,我们主要常用的就两个文件夹,res和scripts(我这不是废话吗) 好吧,还是再打开scripts文件夹看下, 该文件下有main.lua,它是程序lua脚本的启动文件 function __G__TRACKBACK__(errorM

Unity 游戏开发技巧集锦之创建透明的材质

Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示.在Unity中,可以创建模拟了透明效果的材质,这也是本节主要讲解的内容. 图3-23  半透明的卡片 Unity创建并配置材质 在Project视图里,创建一个材质,并命名为TransMaterial,选中它然后在Inspector视图里修改Shader属性为Transparent/Diffuse,

JavaFX战旗类游戏开发 第三课 创建游戏角色

在上一节课程中,我们学习了在JavaFX中绘制游戏地图.这一节课,我们将会创建我们的游戏角色. 首先,同样的,我们创建一个简单的基类. import javafx.scene.canvas.GraphicsContext; /** * 游戏物体基类 * @author Wing Mei */ public abstract class BaseObject { protected double x, y; protected double width,height; protected bool

Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质

Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质 创建部分光滑部分粗糙的材质 生活中,有类物体的表面既有光滑的部分,又有粗糙的部分,例如丽江的石板路,如图3-17所示,石板的表面本来是粗糙的,但是在石板上面走的人多了,石板的一部分就变得光滑了.有时,游戏为了显得更加逼真,就需要模拟这样一种材质. 图3-17  兼具光滑和粗糙表面的丽江石板路 要制作部分光滑部分粗糙的材质,需要用到两种资源:拥有镜面着色器的材质和模拟了现实状况的纹理. Unity中创建并配置材质 在Project视图里,创

微信小程序开发(二)-----项目的创建

项目创建的步骤:(以mac版为例) 1.在"应用程序"中,双击"微信web开发者工具.app", 如图: 2. 选择类型 3.点击"+" 4.点击无AppID 注:因为没有开发资格所以要选择无AppID 5.填写项目名称和项目目录 注意两点: 1.项目文件夹不能用中文; 2.新建项目文件夹要建一个空的文件夹. 6.新建之后的文件目录结构 app.js------应用程序逻辑 app.json------应用程序配置 app.wxss------应

quick-cocos2d-x游戏开发【5】——创建菜单

一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包.一个是图片菜单.一个文本菜单. 一个.图片菜单ui.newImageMenuItem(params) 參数: image: 正常状态的button图像 imageSelected: button按下时的图像(可选) imageDisabled: button被禁用时的图像(可选) listener: 回调函数 tag: button的 Tag.会传入回调函数.多个button使用同一个回调函数时.可依据 Tag 区分哪一个

【iOS开发-50】利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验

接上次案例谈代码封装.上次案例见:[iOS开发-48]九宫格布局案例:自动布局.字典转模型运用.id和instancetype区别.xib重复视图运用及与nib关系 代码封装的原则是:要保证视图控制器尽量少的接触到其他对象的属性,也就是说,尽量把数据或者属性封装到一个类里面,然后利用类或者对象的方法来调用或者设置数据.而是赤裸裸地把属性都写在视图控制器中.核心作用在于:减少视图控制器的代码量,把数据和属性的处理封装起来,这样也便于其他视图控制器的使用. 要做到的结果就是如下(我们要根据数组里面的