Quick cocos2dx-Lua(V3.3R1)学习笔记(三)----不要老是显示Hello World,我们显示点别的

好的,项目建好了,运行了看了效果,连cocos2dx那么经典的背景图都没了,不行,我们来修改他们。

到我们创建项目路径查看

四个文件夹加一个json文件

第二个res文件夹就是我们放资源的地方

第四个scr文件夹就是我们lua脚本的存放位置

看看这个配置json文件里面有是什么

真是我们模拟器的配置信息(你这他么不是废话么,-o-!!!)。

既然我们要显示经典的cocos2dx外星人背景图,先去cocos2dx文件夹盗一张图放到我们res文件夹下(呸,都是自家的,怎么能用盗字呢!)

现在修改脚本,达到我们要的效果。开工......

我们用sublime text打开项目文件夹(请忽略未注册信息吧-0-  )

看到我们res文件夹下面有了这张图

我么进入src看看这个结构是咋样的

src/app文件夹下面就是我们要写lua脚本的存放位置

cocos文件夹放的是引擎的lua文件

framework文件夹存放的就是quick封装cocos2dx lua API的地方

在scr下面的有mian.lua和config.lua文件

打开config.lua

-- 0 - disable debug info, 1 - less debug info, 2 - verbose debug info --是否显示debug信息
DEBUG = 1

-- display FPS stats on screen  --是否显示fps信息
DEBUG_FPS = true

-- dump memory info every 10 seconds  --是否每10s输出debug内存信息
DEBUG_MEM = false

-- load deprecated API     --是否导入不推荐使用的api
LOAD_DEPRECATED_API = false

-- load shortcodes API    --是否导入简码API
LOAD_SHORTCODES_API = true

-- screen orientation    --屏幕方向
CONFIG_SCREEN_ORIENTATION = "portrait"

-- design resolution   --设计分辨率
CONFIG_SCREEN_WIDTH  = 640
CONFIG_SCREEN_HEIGHT = 960

-- auto scale mode      --自适应模式
CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH"

  

这里存放的就是配置信息了(我又说废话,但是不说的,上下文承接。。。。呜呜呜,让我说完。呜呜呜。。啊,别打脸。。)

这个main.lua相当于我们写c++的cocos2dx 的win32文件夹里面的main.cpp文件了,看一下

require("app.MyApp").new():run()

  

运行的是app下面的MyApp.lua文件

我们打开这个文件

require("config")
require("cocos.init")
require("framework.init")

local MyApp = class("MyApp", cc.mvc.AppBase)

function MyApp:ctor()
    MyApp.super.ctor(self)
end

function MyApp:run()
    cc.FileUtils:getInstance():addSearchPath("res/")
    self:enterScene("MainScene")
end

return MyApp

  

我们就看run函数即可,他进入的是MainScene场景

我们打开scenes文件夹下面的MainScene.lua文件

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

function MainScene:ctor()
    cc.ui.UILabel.new({
            UILabelType = 2, text = "Hello, World", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)
end

function MainScene:onEnter()
end

function MainScene:onExit()
end

return MainScene

  

ok,看到Hello,world字样了吧,这边就是主要修改的地方了

修改前,我们先分析下这段简短的代码

注意:class这个函数lua是没有的,是引擎提供的,在\quick-3.3rc1\quick\framework\functions.lua里面有原型,有兴趣自己去看看

在定义自己的类的时候,用local修饰,这样才不会污染全局变量表。

我们看ctor函数,这边就是我们MainScene类的构造函数了,作用和c++ cocos2dx的init函数差不多,我们在里面初始化我们要的精灵,UI等东西

我们先分析第一个cc.ui.UILabel.new函数,其他的我们都很容易看懂,但是这个UILabelType=2中2是什么类型,我们还是看这个函数原型,文件在G:\quick-3.3rc1\quick\framework\cc\ui\UILabel.lua

local UILabel
UILabel = class("UILabel", function(options)
	if not options then
		return
	end

	if 1 == options.UILabelType then
		return UILabel.newBMFontLabel_(options)
	elseif not options.UILabelType or 2 == options.UILabelType then
		return UILabel.newTTFLabel_(options)
	else
		printInfo("UILabel unkonw UILabelType")
	end
end)

UILabel.LABEL_TYPE_BM					= 1
UILabel.LABEL_TYPE_TTF 					= 2

  

原来这是用TTF方式创建Label(所以看到不懂的,最好跳转到定义哪里看一下,就清楚这个魔数啥意思了,推荐sublime text装个quickxdev这个插件,能帮你转到函数定义处)

align函数就是这是设置这个label的位置,第一个参数是锚点 第二 三的参数就是x,y。在c++的cocos2dx里面这个我们要写两行,这里我们只要一行就ok了

addTo函数作用就是 把当前结点作为一个子结点加到target中

你可以改成

function MainScene:ctor()
	local label =  cc.ui.UILabel.new({UILabelType = 2, text = "Hello, World", size = 64})
    label:align(display.CENTER, display.cx, display.cy)
    self:addChild(label)
end

  

换到模拟器,F5一下模拟器,我们看到,效果是一样的

扯了半天,还没有做我们正事,显示背景图,并且将文字修改成其他的

下面是修改的ctor函数

function MainScene:ctor()
	local label =  cc.ui.UILabel.new({UILabelType = 2, text = "Hi ,yiye3376", size = 64})
    label:align(display.CENTER, display.cx, display.height-100)
    self:addChild(label)

    display.newSprite("Hello.png",display.cx,display.cy)
    	:addTo(self)
end

  

写完,保存

display是什么?display 模块封装了绝大部分与显示有关的功能,并负责根据 config.lua 中定义的分辨率设定计算屏幕的设计分辨率。

更多函数使用方法查看这个文件就行了

框架初始化后,display 模块提供下列属性:

-   display.sizeInPixels.width,
-   display.sizeInPixels.height 屏幕的像素分辨率
-   display.widthInPixels,
-   display.heightInPixels 屏幕的像素分辨率
-   display.contentScaleFactor 内容缩放因子
-   display.size.width,
-   display.size.height 屏幕的设计分辨率
-   display.width,
-   display.height 屏幕的设计分辨率
-   display.cx,
-   display.cy 屏幕中央的 x 坐标和 y 坐标
-   display.left,
-   display.top,
-   display.right,
-   display.bottom 屏幕四边的坐标
-   display.c_left,
-   display.c_top,
-   display.c_right,
-   display.c_bottom 当父对象在屏幕中央时,屏幕四边的坐标

  

f5查看效果图

好,看到效果了,很好

时间: 2024-10-10 15:51:21

Quick cocos2dx-Lua(V3.3R1)学习笔记(三)----不要老是显示Hello World,我们显示点别的的相关文章

Lua学习笔记(三):表的构造

构造器是创建和初始化表的表达式.表是Lua特有的功能强大的东西.最简单的构造函数是{},用来创建一个空表.可以直接初始化数组: 1 days = {"Sunday", "Monday", "Tuesday", "Wednesday", 2 "Thursday", "Friday", "Saturday"} Lua将“Sunday”初始化days[1](第一个元素索引为

Cocos2d-x 3.1.1 学习笔记(三)学习绘图API

关于cocos2d-x 3.1.1 版本的绘图方法有两种 1.使用DrawNode类绘制自定义图形. 2.继承Layer类重写draw()方法. 以上两种方法都可以绘制自定义图形,根据自己的需要选择合适的方法. 一.使用DrawNode类绘制自定义图形 使用DrawNode 类绘制图形是最简单的方法,create一个DrawNode类,然后添加进场景.然后就可以愉快的绘图了. 1 auto s = Director::getInstance()->getWinSize(); 2 //创建 3 a

Cocos2d-x 3.1.1 学习笔记(二)创建自定义项目

一.通过命令创建项目 前面搭建好环境后,怎样创建自己的cocos2d-x项目呢? 先来看看cocos2dx 3.1的目录吧 这就是 cocos2dx 3.1的目录, 3.1版本的创建跟以前的不同了(好吧,又变了),我们先把 download-deps.py 和 setup.py 执行一遍,按住shift+鼠标右键 输入cocos命令 回车 这里会看到一些命令的声明,这里我只说下 创建新的项目,输入命令cocos new 这里 -p      是包名 -l       是文件格式 有cpp.lua

基于Cocos2dx+Lua v3.x的RichLabel

RichLabel 简介 RichLabel基于Cocos2dx+Lua v3.x解析字符串方面使用了labelparser,它可以将一定格式的字符串,转换为lua中的表结构扩展标签极其简单,只需添加一个遵守规则的标签插件即可,无需改动已存在代码!!! (标签插件都在labels文件夹下) labelparser的详解labelparser在github上的源码RichLabel在github上的源码 支持图片(缩放,旋转,是否可见) 支持文本属性(字体,大小,颜色,阴影,描边,发光) 支持标签

Cocos2dx 3.1.1 学习笔记整理(1)

最近手痒了,不小心下载了cocos2dx 3.1.1,又搞了个VS2012,于是头脑发热的搞起 3.1.1了. 我是有多么的不专心啊. 已经把自己之前的学习内容从2.2.3迁移到了3.1.1,除了骨骼动画相关的之外. 简单记录一下过程: 1 安装与搭建 解压cocos2dx3.1.1版本,根目录下会有download-deps.py和setup.py, 预先用python分别对这两个文件跑一遍,有问题的话解决问题,没问题的话最好了. 2新建项目 跑完以上两个py文件之后,会自己将所有相关的系统环

Cocos2d-x 3.1.1 学习笔记(四)学习打包Android平台APK!

从cocos2dx 3.1项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷! 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: Android SDK下载http://developer.android.com/sdk/index.html Android NDk下载http://developer.android.com/tools/sdk/ndk/index.html Android JDK下

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T>

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T> 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现和源码 下一篇用它们做一个多语言的demo 这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突. 先看一下它的实现思想 在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列