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. 分布式一致性算法——paxos

    一.什么是paxos算法 Paxos 算法是分布式一致性算法用来解决一个分布式系统如何就某个值(决议)达成一致的问题. 人们在理解paxos算法是会遇到一些困境,那么接下来,我们带着以下几个问题来学习 ...

  2. gitlab之六: gitlab 备份恢复

    参考:   https://blog.csdn.net/ouyang_peng/article/details/77070977 备份: 所有的权限,库文件等信息全部备份到的 不更改备份目录的话: v ...

  3. jenkins(3): jenkins执行shell命令

    参考: https://www.cnblogs.com/reblue520/p/7146693.html 1. 执行 本地 shell命令或者脚本 是在一个构建中的  bulid 选项卡. 执行本地中 ...

  4. PHP使用Apache中的ab测试网站的压力性能及mpm介绍

    打开Apache安装的bin目录 shift+鼠标右键 复制粘贴以下代码->回车 ab -n 1000 -c 100 http://localhost/test.php 上例表示总共访问http ...

  5. idea配置web项目启动的详细说明

    每次用完一个编辑器以后 ,再换另一个编辑器使用 过段时间再回来使用idea,总是会忘记些什么  ,毕竟每个编辑器的风格和结构都有所区别 特此记下笔记   方便以后查看 图片文字看不清的   请在图片上 ...

  6. Hadoop |集群的搭建

    Hadoop组成 HDFS(Hadoop Distributed File System)架构概述 NameNode目录--主刀医生(nn):  DataNode(dn)数据: Secondary N ...

  7. 20165235 祁瑛 Java第四周考试总结

    20165235 祁瑛 Java第四周考试总结 课后习题p29 p45 代码编写 import java.util.*; class Example2_5{ public static void ma ...

  8. window.open 和showModalDialog的返回值

    方法: 1:  在父级页面 test.aspx 的点击<input type="button" id="btnShow" onclick="sh ...

  9. php防攻击

    客户端脚本植入 XSS跨站脚本攻击(跨站脚本攻击,输入(传入)自动执行恶意的HTML代码,如盗取用户Cookie.破坏页面结构.重定向到其它网站):过滤<,>&,"等特殊 ...

  10. CDN拾遗

    作为前端er,辛辛苦苦搬完砖,好不容易上线之后,正准备告一声万事大吉,回家吃鸡.忽然qa/pm/老板问,为什么我这里还是没有更新?只能是弱弱的回一声,清个缓存看看?或者还有那么一天,发现大部分区域都是 ...