• Quick cocos2dxLua(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查看效果图

    好,看到效果了,很好

  • 相关阅读:
    J2ME开发及JBuilder工具的应用
    Oracle 的入门心得
    Java多线程程序设计初步
    网线制作
    手机死机的原因简析
    SIM简介
    谈谈J2ME的几个重要的功能
    手机应该放哪里 如何把危害的程度降到最低
    彩信的基本原理
    oracle学习笔记
  • 原文地址:https://www.cnblogs.com/luagame/p/4213063.html
Copyright © 2020-2023  润新知