转载自:http://cn.cocos2d-x.org/tutorial/show?id=1621

从Samples中找到CoinFlip文件夹,复制其中的 res 和 script 文件夹覆盖新建工程中的 res 和 script文件。

用player运行,游戏可正常打开。

打开main.lua

 function __G__TRACKBACK__(errorMessage)
print("----------------------------------------")
print("LUA ERROR: " .. tostring(errorMessage) .. "\n")
print(debug.traceback("", ))
print("----------------------------------------")
end

require("app.MyApp").new():run() --启动后执行 MyApp 脚本,并执行 run 方法。

main.lua 是lua脚本的启动文件。

无需改动。

打开 MyApp.lua

require("config")
require("framework.init")
require("framework.shortcodes")
require("framework.cc.init") local MyApp = class("MyApp", cc.mvc.AppBase) function MyApp:ctor()
MyApp.super.ctor(self)
self.objects_ = {}
end function MyApp:run()
CCFileUtils:sharedFileUtils():addSearchPath("res/")
display.addSpriteFramesWithFile(GAME_TEXTURE_DATA_FILENAME, GAME_TEXTURE_IMAGE_FILENAME) -- preload all sounds
for k, v in pairs(GAME_SFX) do
audio.preloadSound(v)
end self:enterMenuScene()
end function MyApp:enterMenuScene()
self:enterScene("MenuScene", nil, "fade", 0.6, display.COLOR_WHITE)
end function MyApp:enterMoreGamesScene()
self:enterScene("MoreGamesScene", nil, "fade", 0.6, display.COLOR_WHITE)
end function MyApp:enterChooseLevelScene()
self:enterScene("ChooseLevelScene", nil, "fade", 0.6, display.COLOR_WHITE)
end function MyApp:playLevel(levelIndex)
self:enterScene("PlayLevelScene", {levelIndex}, "fade", 0.6, display.COLOR_WHITE)
end return MyApp

run方法主要做了三件事:设置资源路径,加载游戏资源,进入主场景。

与此同时MyApp还封装了所有场景和它们的切换方法。

进入第一个场景——MenuScene

local AdBar = import("..views.AdBar")
local BubbleButton = import("..views.BubbleButton")

开头两句 import 方法和c++中用处相同,MenuScene要用到以上两个子定义的类。

local MenuScene = class("MenuScene", function()
return display.newScene("MenuScene")
end)

class方法有两个参数,第一个参数是类名。第二参数可以通过两种形式传递参数,一种是传入一个函数,另一种方式是传入一个Quick的类或者是Lua对象。

当传入函数时,新创建的类会以传入的函数作为构造函数。当传入的是一个对象时,会以传入的对象为父类派生下来。

所以此处是新建了一个类。

接下来是ctor方法:

 function MenuScene:ctor()
self.bg = display.newSprite("#MenuSceneBg.png", display.cx, display.cy) -- bg是self的一个属性。此处是一个Sprite,用于背景的添加。
self:addChild(self.bg)                             -- 将此 Sprite 节点添加到 MenuScene 这个节点中。 self.adBar = AdBar.new() -- 信息条:adBar。
self:addChild(self.adBar) -- create menu
self.moreGamesButton = BubbleButton.new({                   -- button 是 MenuScene 的一个属性
image = "#MenuSceneMoreGamesButton.png",
x = display.left + , -- 设置图片位置的坐标相对于边和底的距离
y = display.bottom + ,
sound = GAME_SFX.tapButton,
prepare = function()
self.menu:setEnabled(false)                       -- 关闭 menu 键的功能,防止在item作用的时候menu键也作用
end,
listener = function()
app:enterMoreGamesScene()                        -- 此方法在MyApp.lua中
end,
}) self.startButton = BubbleButton.new({
image = "#MenuSceneStartButton.png",
x = display.right - ,
y = display.bottom + ,
sound = GAME_SFX.tapButton,
prepare = function()
self.menu:setEnabled(false)
end,
listener = function()
app:enterChooseLevelScene()
end,
}) self.menu = ui.newMenu({self.moreGamesButton, self.startButton})
self:addChild(self.menu)
end

ctor 方法相当于构造函数,一旦new,就会调用ctor。

(信息条就是底下这个绿色的东西)



有用的信息:
display.width和display.height表示屏幕宽度
display.cx和display.cy表示屏幕的x轴中间位置和y轴中间位置
display.left和display.right表示屏幕的最左边和最右边(x轴坐标为0和display.width的点)
display.top和display.bottom表示屏幕的顶部和底部(y轴坐标为0和display.height的点)
display.CENTER、display.LEFT_TOP、display.CENTER_TOP等分别表示node的锚点位置。
ADBar.lua
 local AdBar = {}

 function AdBar.new()
local sprite = display.newSprite("#AdBar.png")
sprite:align(display.BOTTOM_CENTER, display.cx, display.bottom)
return sprite
end return AdBar

AdBar 是一个二次封装的精灵,new时,将自动创建并返回一个设置好精灵帧、锚点、X坐标和Y坐标的精灵。


(二次封装的目的除了外部的方便调用外,最大的动能就是代码的复用!所以可以预测到后面的编写中必定将会继续用到这个信息条)


 

Quick Cocos (2.2.5plus)CoinFlip解析(MenuScene display AdBar二次封装)的更多相关文章

  1. cocos2dx与Lua以及quick cocos

    1.cocos2dx中的脚本架构与组件 2.quick cocos的开发优势 3.自定义c++类如何导出到lua

  2. 【Quick 3.3】资源脚本加密及热更新(二)资源加密

    [Quick 3.3]资源脚本加密及热更新(二)资源加密 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 在前一篇文章中介绍了代码加密,加密方式是XXTEA.对于资源文件来说,同样 ...

  3. 制作、解析带logo的二维码

    用DecoderQRCode来解析带logo的二维码,发现报错,解析不了,于是便又查资料,找到了更强大的制作二维码 工具:GooleZXing 首先下GooleZXing的jar包. -------- ...

  4. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

    OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...

  5. Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架

    Android6.0执行时权限解析,RxPermissions的使用.自己封装一套权限框架 在Android6.0中,新添加了一个执行时的权限,我相信非常多人都已经知道了.预计也知道怎么用了,这篇博客 ...

  6. 15. 深入解析Pod对象(二):使用进阶

    15. 深入解析Pod对象(二):使用进阶 15.1 Projected Volume,投射数据卷 备注:Projected Volume 是 Kubernetes v1.11 之后的新特性 在 Ku ...

  7. 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)

    一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...

  8. D. The Wu 解析(思維、二進位運算)

    Codeforce 1017 D. The Wu 解析(思維.二進位運算) 今天我們來看看CF1017D 題目連結 題目 略,請直接看原題 前言 官方解答實在看不懂...之後還記得的話再補那個做法吧 ...

  9. Spring源码解析之ConfigurationClassPostProcessor(二)

    上一个章节,笔者向大家介绍了spring是如何来过滤配置类的,下面我们来看看在过滤出配置类后,spring是如何来解析配置类的.首先过滤出来的配置类会存放在configCandidates列表, 在代 ...

随机推荐

  1. 关于JS的prototype

    在接触JS的过程中,随着理解的深入会逐渐的理解一些比较深奥的理论或者知识,那么今天我们来介绍一下比较难理解的prototype和constructor. 初步理解: 在说prototype和const ...

  2. Python的数据类型

    Python的主要数据类型有:Number(数字),String(字符串类型),布尔值,List(列表),Tuple(元组)和Dictionary(字典). 1.数字(Number) 数字包括整数和浮 ...

  3. polya/burnside 学习

    参考链接: http://www.cnblogs.com/hankers/archive/2012/08/03/2622231.html http://blog.csdn.net/raalghul/a ...

  4. [LeetCode] Contains Duplicate II 包含重复值之二

    Given an array of integers and an integer k, return true if and only if there are two distinct indic ...

  5. 浅谈 Web 中前后端模板引擎的使用

    前言 这篇文章本来不打算写的,实话说楼主对前端模板的认识还处在非常初级的阶段,但是为了整个 源码解读系列 的完整性,在深入 Underscore _.template 方法源码后,觉得还是有必要记下此 ...

  6. telent对端口检测状态分析

    telnet基于TCP/IP协议通信的,把远程的shell反弹回本地! yum install -y telnet apt-get  install telnet ###端口被封,有墙堵住 [root ...

  7. C语言中函数的传入值与传出值

    看到一个函数的原型后,怎么样一眼看出来哪个参数做输入哪个做输出? 函数传参如果传的是普通变量(不是指针)那肯定是输入型参数: 如果传指针就有 2 种可能性了,为了区别,经常的做法是: 如果这个参数是做 ...

  8. 移动端重要的几个CSS3属性设置

    去掉点击链接和文本框对象的半透明覆盖(iOS)或者虚框(Android) -webkit-tap-hightlight-color:rgba(0,0,0,0); 禁用长按页面时弹出菜单(iOS下有效) ...

  9. vim编辑强制退出

    quit!命令可以进行强制退出 在修改文件时注意他的权限, ls -l:查看当前目录下的所有文件的详细信息

  10. IE下get传中文乱码的问题 -- 解决方案 (js)

    W3school 函数 JavaScript 全局对象 定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIs ...