• quick-cocos-2dx学习之【init.lua】


    init.lua的学习开始,看大师是怎么对接口进行二次封装的~

    1、

    local ok, socket = pcall(function()
      return require("socket")
    end)

    if ok then
      math.randomseed(socket.gettime() * 1000)
    else
      math.randomseed(os.time())
    end

    math.random()
    math.random()
    math.random()
    math.random()

    上面代码的意图是:

    创建一个socket,创建成功的话,ok = true,失败则ok = false。

    创建成功的话,就用socket来获取时间,然后拿来作为随机种子,否则用os的time()方法来创建随机种子。

    socket与os的差别在于,socket的对时间的获取精度更高(0.001s),os的精度则在秒(0.01s)。

    然后random了四次。。。(听说因为Lua中的random方法在首次random时,有bug,所以。。。)

    2、

    if type(DEBUG) ~= "number" then DEBUG = 1 end
    local CURRENT_MODULE_NAME = ...

    cc = cc or {}
    cc.PACKAGE_NAME = string.sub(CURRENT_MODULE_NAME, 1, -6)
    cc.VERSION = "2.2.0"
    cc.FRAMEWORK_NAME = "quick-cocos2d-x client"

    require(cc.PACKAGE_NAME .. ".debug")
    require(cc.PACKAGE_NAME .. ".functions")
    require(cc.PACKAGE_NAME .. ".cocos2dx")


    echoInfo("")
    echoInfo("# DEBUG = "..DEBUG)
    echoInfo("#")

    device = require(cc.PACKAGE_NAME .. ".device")
    transition = require(cc.PACKAGE_NAME .. ".transition")
    display = require(cc.PACKAGE_NAME .. ".display")
    audio = require(cc.PACKAGE_NAME .. ".audio")
    network = require(cc.PACKAGE_NAME .. ".network")
    ui = require(cc.PACKAGE_NAME .. ".ui")
    crypto = require(cc.PACKAGE_NAME .. ".crypto")
    json = require(cc.PACKAGE_NAME .. ".json")

    上面代码的意思是:如果DEBUG变量不是number的话,就设置值为1。

    CURRENT_MODULE_NAME = ... 是为了获取当前lua文件的require路径,

    假设有个文件夹app下有文件myapp.lua,那么此时的"..."的值:app.myapp

    所以这个文件的表示应该是xxx.yyy.init

    然后分割了下串,去除了尾部的.init,此时同一个文件夹下面的lua文件就可以正常require了,

    像下面三行require的那种表示形式,表示require了与init.lua同文件夹下面的三个.lua文件。

    然后echo打印控制台了下,接着可以看到我们常用的熟悉的身影了(device,audio,display...他们就是通过这种方式加载进来的)

    3、

    if not NO_EXTENSIONS then
      require(cc.PACKAGE_NAME .. ".cc.init")
    end

    if not NO_SHORTCODES then
      require(cc.PACKAGE_NAME .. ".shortcodes")
    end

    local sharedTextureCache = CCTextureCache:sharedTextureCache()
    local sharedDirector = CCDirector:sharedDirector()
    local function showMemoryUsage()
      echoInfo(string.format("LUA VM MEMORY USED: %0.2f KB", collectgarbage("count")))
    end

    if DEBUG_FPS then
      sharedDirector:setDisplayStats(true)
    end

    if DEBUG_MEM then
      sharedDirector:getScheduler():scheduleScriptFunc(showMemoryUsage, 10.0, false)
    end

    上面的代码:首先把需要包含的文件require进来,用短名命名TextureCache和Director,

    然后根据相关的标志位,打开FPS,打开垃圾显示,每过10秒显示一次lua的内存信息。

  • 相关阅读:
    ORACLE--Connect By、Level、Start With的使用(Hierarchical query-层次查询)
    小工具-ANT
    测试类。。。重写篇
    java代码----求最大值,平均值。。。
    java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
    java代码求输入数的平均值~~~~
    java代码求输入的三个数的最大值
    java代码switch语句求分数等级
    java代码求分数等级的输出~~~
    java代码 求和1+1/2+1/3+1/4+1/5+1/6+.......+1/n 的值~~~~
  • 原文地址:https://www.cnblogs.com/vokie/p/3652185.html
Copyright © 2020-2023  润新知