Cocos2d-x 3.5的lua项目生成后,变成了MVC模式,并且,加入了一个全局变量的检测功能。也就是说,你不小心用了全局变量,他会提示你出错!

比如

local temp = 1

temp = 10

print(temp)

你写成了

local temp = 1

tepm = 10 –这里写错了

print(temp)

然后,print结果就会不同,同时你还会创建一个 全局的 tepm 永远不会被释放。这种问题,在lua中很容易遇到(虽然现在有代码提示 还是不太容易出现,但是谁说的准呢!)。

所以,C2d加入了一个全局命名空间的检测,通过setmetatable的方式。该函数在

src/cocos/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 if CC_DISABLE_GLOBAL then
cc.disable_global()
end<span style="font-family:Arial;font-size:18px;color:#333333;"><span style="line-height: 26px;">
</span></span>

有效的帮助开发者避免上述错误!

那么如果我一定要用到全局变量才行呢?例如 require "socket" 的luasocket库

这个问题有若干种解决办法,

1、最简单粗暴的就是直接注释掉着一块。

2、将CC_DISABLE_GLOBAL设置为False

3、在mian.lua的 require "cocos.init"之前 require 所需的库和全局的变量

但是 如果是开发者自己需要使用全局变量。而不是其他库需要用到全局变量的话!

请使用使用官方推荐的方法cc.exports.* 来充当全局变量!

如:cc.exports.MY_GLOBAL = "hello"

USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE"的更多相关文章

  1. robot framework 上个用例的输出作为下个用例的输入 (Set Global Variable的用法)

    变量的作用域 通常情况下,每个变量默认都是局部变量. 一个case里的变量,作用域在这个case内部: 一个userkeyword里的变量,作用域在这个userkeyword内部: 一个文件型suit ...

  2. Golang Global Variable access

    golang 中全局变量的问题. ------------------------------------------------------------------ 17down votefavor ...

  3. Use of implicitly declared global variable

    https://stackoverflow.com/questions/7604419/resharper-javascript-use-of-implicitly-declared-global-v ...

  4. Global variable in ABAP function group

    Function group is loaded into runtime memory by the FIRST call of a function module inside this func ...

  5. Can we access global variable if there is a local variable with same name?

    In C, we cannot access a global variable if we have a local variable with same name, but it is possi ...

  6. CodeIgniter 定义“全局变量-global variable”,可以在所有controller,model和view中使用

    本文抄自http://www.cnblogs.com/webu/archive/2012/11/20/2779999.html 第一次正儿八经用CodeIgniter框架做项目,结果不会定义全局变量, ...

  7. 【兼容调试】cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS

    重装cryptography就好了. conda uninstall cryptography conda install cryptography https://github.com/pyca/c ...

  8. [翻译]ES 提案: global

    Jordan Harband 的 ECMAScript 提案“global”现在处于第三阶段.该提案提供了一种新的用于访问全局对象的标准方式. 全局对象的引用 下面是常用的几种引用全局对象的方式: 全 ...

  9. 大熊君大话NodeJS之------Global Objects全局对象

    一,开篇分析 在上个章节中我们学习了NodeJS的基础理论知识,对于这些理论知识来说理解是至关重要的,在后续的章节中,我们会对照着官方文档逐步学习里面的各部分模块,好了该是本文主角登台亮相的时候了,G ...

随机推荐

  1. HTML中鼠标滚轮事件onmousewheel

    IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件. /*IE注册事件*/ if(document.attachEvent){ document.attachEvent('onm ...

  2. Enrolment注册插件

    自moodle2.0注册插件必须继承 lib/enrollib.php的  enrol_plugin 抽象类:这个基类包含所有标准方法和开发人员文档 课程注册信息存储在enrol和user_enrol ...

  3. oracle获取某个月份的最后一天

    select last_day(to_date('1992-10','yyyy-mm')) from dual; 输出:1992/10/31

  4. hive参数配置及任务优化

    一.hive常用参数 0.常用参数 --@Name: --@Description: --@Type:全量加载 --@Author:--- --@CreateDate: --@Target: --@S ...

  5. JAVA首次课堂测试总结

    暑期生活已经结束,新的学期也已经开始,而暑期放假之前约定的JAVA首次课堂测试也如期的到来,本次测试真的可以学到和多东西,也有很多感想. 首先体会最深的就是系主任所说的软件工程不是那么好学的,真的需要 ...

  6. Codeforces 861D - Polycarp's phone book 【Trie树】

    <题目链接> 题目大意: 输入7e4个长度为9的字符串,每个字符串中只出现0~9这几种数字,现在需要你输出每个母串中最短的特有子串. 解题分析: 利用Trie树进行公共子串的判定,因为Tr ...

  7. Ignatius and the Princess III HDU - 1028 -生成函数or完全背包计数

    HDU - 1028 step 1:初始化第一个多项式 也就是 由 1的各种方案 组 成 的多项式 初始化系数为 1.临时区 temp初始化 为 0 step 2:遍历后续的n - 1 个 多项式 , ...

  8. Wan Android 项目总结

    Wan Android 项目总结 项目的由来 这个项目也算是自己学习了一段时间的Android以后的一个总结和学习吧,项目采用了Kotlin语言,Api采用的hongyang大神的WanAndroid ...

  9. Alpha(3/10)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  10. 56.两数之和.md

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...