Cocos2d-lua(五)config.json 和 config.lua

一、config.json

窗口的配置文件,想设置模拟器的大小就在这里设置。路径:D:\project\demo(我的cocos2d-lua项目的名字为:demo)

{
    "init_cfg":{
       "isLandscape": false,       //是否横屏,false:竖屏,true:横屏
       "isWindowTop": false,       //窗口置顶配置, false:不置顶,true:置顶
       "name": "demo",             //工程名字,窗口标题 
       "width": 540,               //窗口宽
       "height": 960,              //窗口高
       "entry": "src/main.lua",    //启动入口
       "consolePort": 6050,        //控制台端口
       "uploadPort": 6060          //接收IDE上传文件的端口
    },
    "simulator_screen_size": [     //模拟器屏幕分辨率的大小,只在桌面系统下生效
        {
            "title": "iPhone 3Gs (480x320)",
            "width": 480,
            "height": 320
        },
        {
            "title": "iPhone 4 (960x640)",
            "width": 960,
            "height": 640 
        },
        {
            "title": "iPhone 5 (1136x640)",
            "width": 1136,
            "height": 640
        },
        {
            "title": "iPad (1024x768)",
            "width": 1024,
            "height": 768
        },
        {
            "title": "iPad Retina (2048x1536)",
            "width": 2048,
            "height": 1536
        },
        {
            "title": "Android (800x480)",
            "width": 800,
            "height": 480
        },
        {
            "title": "Android (854x480)",
            "width": 854,
            "height": 480
        },
        {
            "title": "Android (1280x720)",
            "width": 1280,
            "height": 720
        }
    ]
}


二、config.lua

游戏的配置文件

-- 0 - 不显示debug信息,1 - 打印少量debug信息,2 - 打印标准debug信息
DEBUG = 1

-- 使用框架,将禁用所有过时的API,false - 用过时的API
CC_USE_FRAMEWORK = true

-- 屏幕显示FPS
CC_SHOW_FPS = true

-- 禁止未预期的全局变量
CC_DISABLE_GLOBAL = true

--设计分辨率
CC_DESIGN_RESOLUTION = {
    width = 1080,
    height = 1920,
    autoscale = "FIXED_HEIGHT",
    callback = function(framesize)
        local ratio = framesize.width / framesize.height
        if ratio <= 1.34 then
            -- iPad 768*1024(1536*2048) is 4:3 screen
            return {autoscale = "FIXED_WIDTH"}
        end
    end
}


1.CC_DISABLE_GLOBAL(禁止未预期的全局变量),例子:定义一个全局变量,运行之后会报错,错误如下:

Cocos2d-lua(五)config.json 和 config.lua_第1张图片

  • 为什么会报错呢?

       lua中定义一个变量时,默认是全局变量(在整个程序中都不会去释放),为了避免是全局变量,定义时会加local来让变量为局部变量。在编程过程中难免会出现忘记加local来定义局部变量, 为了避免全局变量引来的bug,cocos2d-lua引擎就加了检查全局变量的功能。代码在srccocos/framework/init.lua

-- disable create unexpected global variable
function cc.disable_global()
    setmetatable(__g, {
        __newindex = function(_, name, value)
            error(string.format("USE \" cc.exports.%s = value \" INSTEAD OF SET GLOBAL VARIABLE", name), 0)
        end
    })
end

 
    

  • 如何解决呢?

方法1:暴力的,直接把这句代码注释了

--注释这句代码
--error(string.format("USE \" cc.exports.%s = value \" INSTEAD OF SET GLOBAL VARIABLE", name), 0)

 
    

方法2:温柔的,改配置文件

CC_DISABLE_GLOBAL = false


方法3:合理的,按着规矩走,用cocos2d-lua定义全局变量的方法来定义。

--定义一个全局变量
--GLOBAL_VARIABLE = 1
cc.exports.GLOBAL_VARIABLE = 1

--控制台输出全局变量
print(cc.exports.GLOBAL_VARIABLE) --方法一
print(GLOBAL_VARIABLE)            --方法二
print(_G.GLOBAL_VARIABLE)         --方法三

--定义一个全局函数
local function global_function()
end
cc.exports.global_function = global_function

 
    


2.分辨率,有四种方式

  • EXACT_FIT:铺满全屏,界面可能会被拉伸变形。
  • SHOW_ALL:以较长边与屏幕比例拉伸,短边会出现黑边,界面不变形。
  • NO_BORDER:以较短边与屏幕比例拉伸,无黑边,屏幕外的界面看不见,界面不变形。

注:EXACT_FIT、SHOW_ALL、NO_BORDER,设计分辨率变了,界面都会被拉伸,不采用这3种方式,这是3.0版本之前用的。

  • FIXED_HEIGHT:适高,设计分辨率不变,高度不变,超出的宽会被裁切。
  • FIXED_WIDTH:适宽,设计分辨率不变,宽度不变,超出的高会被裁切。

注:FIXED_HEIGHT和FIXED_WIDTH,设计分辨率不变,根据游戏的类型采用这2种方式,3.0版本后添加的。






你可能感兴趣的:(Cocos2d-lua)