lua学习
文章平均质量分 69
漫步者、
从事游戏开发者
展开
-
关于cocos studio 适配问题
我们在适配会遇到各种问题,我们一般会用cocos studio 来做UI适配,但是它也不是万无一失的,那么怎么办呢?我们在进行UI适配的时候,我们就采用Panel来装下整个UI界面,只需要对这个一个子节点来进行适配即可,其他的子节点就一个个来进行适配,缩放等操作。可以执行编辑器里面的四个方向叫,宽高适配。在到处csb的时候,还需要在代码里面更新一下UI适配,代码如下: self._Pane原创 2016-01-09 16:42:40 · 3068 阅读 · 0 评论 -
如何实现字幕效果,cocos2dx ,Lua
实现这个字幕效果,其实很简单,只需要画一个遮罩即可完成,带遮罩内部显示,外部隐藏,如下有C++,lua两个版本的代码:local GG = self._Panel:getChildByName("notification_bg") local GGW = GG:getContentSize().width local GGH = GG:getContentSize().height原创 2016-01-10 04:24:18 · 2308 阅读 · 1 评论 -
关于lua中如何修改引用的值
在Lua中,有时候我们希望可以像C/C++那样修改引用值,但是对于Lua这个脚本语言来讲它是没有&引用符号,它自己规定是,table作为形参的时候,在函数内部修改table的值都是在对实参进行操作,也就是table进行引用操作。其他类型(内置类型:int ,float..)都是以拷贝的形式进行操作。不管在函数内部如何操作,都不会修改它的值。原创 2015-12-29 16:31:12 · 3067 阅读 · 0 评论 -
在lua中如何remove掉table里面的数据
在lua开发中,数据保存一般都会用tabel来保存,但是在用到table之后,我们都会去清理table,那么我该怎么做呢?我们会调用到table中的remove函数来清理,但是需要注意的是,remove(table,[pos]),删除在pos位置上的元素,后面的元素会向前一栋,然后删除的index会向前移动,导致删除后的数据不是你想要的,那么需要怎么做呢,我们就采取从后面删除,这样就可以解决问原创 2015-12-29 11:28:39 · 22260 阅读 · 1 评论 -
cocos2dx在写中文字体的时候出现乱码
有时候,根据程序的需要,可能会原创 2015-05-26 13:30:14 · 1677 阅读 · 1 评论 -
lua中self的作用
self其实就相当于Java,C++中的this对象,我们看代码:a = {x = 3, y = 4}a.__index = function(table, key) print("__index") return a[key] end --注: --冒号,在定义的时候省略掉了self --点,在定义的时候不省略self--[[ function a.new原创 2015-05-24 23:14:54 · 30234 阅读 · 1 评论 -
lua 求table长度
求table元素个数,一般采用#,getn来获取,这两个是等价的。看例子t_ = { nil, 1, 2, "dd", nil, 4, nil, nil, 7}i = 0for k,v in pairs(t_) do i = i + 1 --clac the count of the table(t_)endprint(#t_) -->9print(i) -->5原创 2015-05-24 11:59:07 · 4349 阅读 · 2 评论 -
lua setmetatable实现继承
table_Base = {}function table_Base.getValue() return -1;endfunction table_Base.newObject(o) o = o or {}; setmetatable(o, self); o.__index = self; return o;endfunction table_Base.Name() pr原创 2015-05-21 15:16:36 · 4590 阅读 · 0 评论 -
.和:调用函数参数的传递
tb.print和tb:print的含义略微不同,:调用函数会多传递进去一个self进去,差不多相当于OOP里面的成员函数调用.但是和OOP里面成员函数/非成员函数不同的是,lua里面的非成员函数.调用,他不是静态的.tb对象有一个print function成员,当tb是nil的时候,你不能调用print成员的....在OOP里面,没有这么一回事,非成员函数是全局的.原创 2014-10-09 17:24:51 · 642 阅读 · 0 评论 -
lua实现加法(__add)重载
do local Infor_class = {}; function Infor_class.create(_t) local newTable = {}; setmetatable(newTable, Infor_class); for i, v in pairs(_t) do newTable[i] = v; end return newTable; end原创 2014-09-28 22:41:46 · 6075 阅读 · 0 评论 -
lua中rawset/rawget
rawget是为了绕过__index而出现的,直接点,就是让__index方法的重写无效。(我这里用到"重写"二字,可能不太对,希望能得到纠正)Window = {}Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,}Window.mt = {}function Window.new(o) setmetat原创 2014-09-28 17:35:25 · 27187 阅读 · 5 评论 -
lua之__index
当我们访问一个表的不存在的域,返回结果为nil,这是正确的,但并不一定正确。实际上,这种访问触发lua解释器去查找__index metamethod:如果不存在,返回结果为nil;如果存在则由__index metamethod返回结果。这个例子的原型是一种继承。假设我们想创建一些表来描述窗口。每一个表必须描述窗口的一些参数,比如:位置,大小,颜色风格等等。所有的这些参数都有默认的值,当我们原创 2014-09-27 15:20:28 · 3571 阅读 · 0 评论 -
cocos2dx 绽开效果
animalNode:setScale(0.1) animalNode:setOpacity(0) local action1 = cc.Spawn:create(cc.ScaleTo:create(0.15, 2.0),cc.FadeTo:create(0.15,255)) local action = cc.Sequence:create(action1,cc.Del原创 2016-01-20 16:07:57 · 845 阅读 · 0 评论 -
关于Lua ClippingNode裁剪
关于裁剪,这个我有遇到一个坑(3.4)的,在做裁剪的时候,整个背景色都是灰色,没有裁剪效果,C++上是可以正常运行,显示裁剪效果,但是用Lua就没有,我找了半天也没有找到原因,。最后在一片文章中看到了这样一句话:需要在初始化app的时候,添加如下代码: _app = new AppDelegate(); _app->initGLContextAttrs();需要手动添加红色字体原创 2016-01-09 10:28:39 · 3519 阅读 · 0 评论 -
cocos2dx-js(3.14版本) JS与C++ 互调 JS与JAVA 互调,JS与OC 互调
1, JS 与 C++ 互调2, JS 与 Java 互调3, JS 与 OC 互调原创 2017-02-14 16:18:34 · 4025 阅读 · 2 评论 -
Node Js 使用Protobuf
1,先去Nodjs下载 下载一个安装文件2,安装完毕后呢, 就利用命令:npm install protobufjs进行安装查看node js版本:node -v3,用IDE 打开,我使用webstom4, 创建 协议文件:awesome.proto, 内容为:package awesomepackage;syntax = "pro原创 2017-02-14 16:09:03 · 6128 阅读 · 2 评论 -
cocosjs 使用XMLhttpRequest 跨域问题
服务器后台 设置响应头 “Access-Control-Allow-Origin”值为 请求域名。原创 2017-02-16 18:00:26 · 3566 阅读 · 0 评论 -
cocos2dx 关于节点缩放
如果你有一个Node在一个盒子里,盒子的锚点在左下角,这个Node一开始的时候是这个样:position=(0, 0), anchorPoint=(0, 0), scale=1然后更改它的scale让它撑满整个区域:position=(0, 0), anchorPoint=(0, 0), scale=1.09:这个时候重新设置它的锚点为右上角(1, 1),你认为会发原创 2016-11-07 16:35:33 · 3682 阅读 · 1 评论 -
Cocos2dx lua绑定C++
在tolua目录随便复制一个ini配置文件,对着修改你的ini文件即可修改py文件最好是用cmd命令执行这个Py文件,这样的话可以看到错误信息。原创 2016-04-14 14:34:40 · 883 阅读 · 0 评论 -
Lua快速插入排序
function inserSort(arrayTable, value) local len = #arrayTable local target = len + 1 for i = len, 1, -1 do if value > arrayTable[i] then while target > i do if i == len then ta原创 2016-08-22 17:37:35 · 1122 阅读 · 0 评论 -
Cocos2dx android 上打包出现编译警告: 编码 UTF-8 的不可映射字符
只需要用Notepad++打开该javac, 格式-》编码从utf-8转换为utf-8 without BOM就可以了。原创 2016-04-14 11:23:52 · 1205 阅读 · 0 评论 -
cocos2dx TexturePacker加密资源
TexturePacker最新版本中增加了一个新功能以防止你的产品资源被反编译出来。它被称为ContentProtection,即图片加密。但目前官方只支持Cocos2d-iphone的解密.TexturePacker作者说,不久Cocos2d-x也将集成解密功能.代码已经提交Cocos2d-x github官方库。你的app或者游戏仍可以解密数据,但是其他人则需要耗上很长的时间才原创 2016-03-30 10:14:58 · 1321 阅读 · 0 评论 -
cocos2dx 3.xLua脚本加密解密
使用LUA脚本开发游戏有着诸多的优势,动态更新,不需要考虑内存和数据类型等等。但是LUA脚本的安全性问题却似的许多开发者非常苦恼。我这两天因为LUA脚本加密的问题苦恼了好久,经过了两天的努力,竟然在Cocos2d的官方找到了一套完整的解决方案,在此介绍给大家希望有所帮助。正文开始:首先,我们要先对LUA脚本进行编译、加密和签名。有幸的是,我们不需要自己去进行:原创 2016-03-30 10:13:38 · 5049 阅读 · 0 评论 -
cocos2dx 3.4配置vs2013 + lua环境
cocos2dx 3.4版本及3.4以下版本都可以用cocos ide调试lua,说实话,那个编辑比较差,卡就卡半天。我们就用vs来进行调试lua环境配置步骤如下:第1步:安装vs2013第2步,下载插件,地址:https://babelua.codeplex.com/第3步,安装..BabeLua For 2013 .....vsix原创 2016-02-16 23:33:01 · 4907 阅读 · 0 评论 -
lua如何在游戏中保存上一次游戏状态
一般在小型单机游戏中会有保存上次玩家的游戏状态,那么该怎么做呢,一般方法会想到利用文件保存。在lua开发中,都以lua文件来配置游戏数据,所以,我们在保存游戏状态的时候,我们也用lua文件作为保存文件。大概流程如下function game:load() local f = dofile(filePath) -- 生成一张表lua for _, t in pairs(f) d原创 2015-12-27 12:44:02 · 2406 阅读 · 0 评论 -
lua之协同程序coroutine
do --create coroutine table --coroutine state: suspended, running, dead, normal --when create the coroutine, the status is suspended, After calling it, the status is dead --get the coroutine statu原创 2014-09-25 15:19:48 · 978 阅读 · 0 评论 -
lua读写文件
读写文件的模式:r - 读取模式w - 写入模式(覆盖现有内容)a - 附加模式(附加在现有内容之后)b - 二进制模式r+ - 读取更新模式(现有数据保留)w+ - 写入更新模式(现有数据擦除)a+ - 附加更新模式(现有数据保留,只在文件末尾附加)原创 2014-09-25 13:42:23 · 2724 阅读 · 1 评论 -
lua 之多重继承
local function search(k, plist) for i, v in pairs(plist) do local temp_v = v[k] if temp_v then return temp_v end endendfunction createClass(...) local c = {} local parents = {...}原创 2013-11-15 10:10:22 · 1987 阅读 · 0 评论 -
Lua之变量环境
在lua定义的全局变量都存table中,这个table放在空间_G里面,和C/C++里面的namespace 一样,我们通过代码来解释吧!a = 1local b = 3local newg = {}setmetatable(newg, {__index = _G})//绑定到newg新的table 空间中setfenv(1, newg)//改变环境,设定到newga = 10pr原创 2013-11-14 17:15:05 · 1585 阅读 · 0 评论 -
lua 与VC环境配置
一下就是LUA的开发环境。如果你是个C/C++程序员,用的是VS。本人用的是VS2008。有点怀旧了,忍忍!选择“Tools(工具)”-->“Options(选项)”-->“Projects and Solutions(项目和解决方案)”-->“VC++ Directories(C++目录)”。(1)在右边的“Show Directories for(显示目录)”中的下拉菜单中选择“I原创 2013-11-15 15:51:57 · 1831 阅读 · 0 评论 -
lua之字符串格式化
a = 'aadsdf\"'print(string.format("%q",a))%d十进制整数%o八进制整数%x十六进制整数,大写的话为 %X%f浮点型 格式 [-]nnnn.nnnn%e科学表示法 格式 [-]n.nnnn e [+|-]nnn, 大写的话为 %E%gfloating-point as %e if exp. = precis原创 2013-11-14 22:26:43 · 32804 阅读 · 0 评论 -
lua 之弱引用
一个table的弱引用类型是通过其元素表中的__mode字段来决定的,这个字段的值应为一个字符串,如果这个字符串中包含字母'k'/'v'那么这个table 的value是弱引用,代码如下:key = {}a[key] = 1key = {}a[key] = 2collectgarbage() --强制进行一次垃圾收集for k, k in pairs(a) do print(v)原创 2013-11-15 11:12:37 · 3606 阅读 · 0 评论 -
lua 中pair 和ipair的区别
采用pair:function print_contents(params) for k, v in pairs(params) do print(k, " ", v) endendprint_contents({20, 40, 50})采用inpari:local tt = { [1] = "test3", [4] = "test4原创 2013-11-13 11:43:42 · 4444 阅读 · 0 评论 -
lua之metatable
setmetatable (table, metatable)Lua 中的每个值都可以用一个 metatable。 这个 metatable 就是一个原始的 Lua table , 它用来定义原始值在特定操作下的行为。 你可以通过在 metatable 中的特定域设一些值来改变拥有这个 metatable 的值 的指定操作之行为。 举例来说,当一个非数字的值作加法操作的时候, Lua原创 2013-11-13 17:41:24 · 1332 阅读 · 0 评论 -
lua之OO学习
今天学习到OO,看到类这章,其实table和C/C++的类比较类似,那好,我们现在来进行设计!local Object = {}Object.m_Index = 1;function Object:Add_(a, b) self.a = a self.b = b return a + bendfunction Object:Minus_(a, b) self.a = a原创 2013-11-13 17:01:06 · 1320 阅读 · 1 评论 -
lua 之__index/__newindex的理解
--example:local temp_table ={ 10, 1, Index1 = "hello", Index2 = "world", Index3 = "lua", Index4 = "language", lang = "lua language",}temp_table.__add = function(a, b) return 3 endfor _,原创 2013-11-14 09:58:18 · 1299 阅读 · 0 评论 -
lua 中table 内嵌table
废话不多少,看代码:local temp_insert_table_Data = { x = "test3", y = "test4", z = "test5" ,}local temp_insert_table = { x = 1, y = 2, z = 3, { a = -1, a1 = 1}, { b = -2, b1 = 2}, { c =原创 2013-11-13 12:10:40 · 6175 阅读 · 0 评论 -
如何使用sciTe去执行lua、C++、java等文件
我在这里需要讲述的是如何去调用.lua文件,因为工作的需要,好了不废话了! 首先从网上下个lua编辑器,它自带了个sciTe编辑器,你这个时候需要的如何去写入lua代码,你在langu()age选项中选择lua语言,然后输入代码:print("hello wordl")然后选择file选项,进行保存,这个时候千万要记得加上扩展名.lua,如果是C/C++的话,你可以选择是.cpp原创 2013-11-13 00:26:18 · 15970 阅读 · 9 评论 -
lua之基本函数
在大多数Lua语法分析中可以获得这些标准Lua函数. 无可争辩, 我们可以查阅Lua网站, 但是一些少了的函数被Blizzard进行了调整. 下面列出了所有Lua函数. WoW API中的Lua注意在WoWAPI没有提供所有标准的Lua函数, 很显然, 操作系统以及文件I/O库是不支持的 Lua函数这些函数都是Lua编程语言的一部分, 点击这里了解更多. •assert原创 2014-02-27 00:43:18 · 4686 阅读 · 0 评论 -
lua 之如何便利数组和table
方法一,可以用for来遍历:do table_week = { "w", "e", "r", "t", "y", "u", "i", } for i = 1, #table_week do print(table_week[i]) endend#后面接一个数组或者tabe来遍历它,i是该table或者数组的起始下标。方法2:do table_week原创 2014-02-25 01:00:49 · 17878 阅读 · 2 评论