Quick-cocos2d-x中require和import用法

require是Lua自带的函数,require("test")有2个作用: 

1.执行文件test.lua中直接调用的语句,多次调用require一个文件只会执行一次

2.加载test.lua中的表,变量,函数等定义的东西

要注意的是require查找文件的路径,其保存在package.path中,这种路径是"模板式的路径",它里面会包含可替代符号"?",这个符号会被替换,然后lua查找这个文件是否存在.可以通过print(package.path)查看路径,例如我print的路径信息为:

.\?.lua;

D:\QuickRoot\Quick0\frameworks\runtime-src\proj.win32\Debug.win32\lua\?.lua;

D:\QuickRoot\Quick0\frameworks\runtime-src\proj.win32\Debug.win32\lua\?\init.lua;

src\

路径中的问号会被替换为文件或文件夹名,例如require("a.b")时,.会被翻译为目录分隔符\ ; 查找文件为:

.\a\b.lua;

D:\QuickRoot\Quick0\frameworks\runtime-src\proj.win32\Debug.win32\lua\a\b.lua;

D:\QuickRoot\Quick0\frameworks\runtime-src\proj.win32\Debug.win32\lua\a\b\init.lua;

src\a\b.lua

因此使用require时并不会在本文件所在同级目录查找,quick中main.lua里有这么一句:

package.path = package.path .. ";src/" 因此可以使用这样字符串追加的方式增加新的查找路径


import是quick-cocos2d-x框架中的函数,定义在functions.lua中,其内部实现最终也是调用require,和require相比import加载文件后的效果相同,支持在package.path路径中搜索; 区别是import支持同级目录和上级目录搜索,同级目录搜索加一个点:import(".test"),上级目录搜索加2个点:import("..test"),依次类推.

不过 import() 只有在模块级别调用(也就是没有将 import() 写在任何函数中)时,才能够自动得到当前模块名。如果需要在函数中调用 import(),那么就需要指定当前模块名:

    local CURRENT_MODULE_NAME = ...
    self.sprite:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event) 
        import("..test", CURRENT_MODULE_NAME)
        return false
    end)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ellis1970

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值