
lua
文章平均质量分 68
andy1515
半路程序员
展开
-
深入理解Lua的闭包:概念和应用
深入理解Lua的闭包一:概念和应用_cbbbc的博客-优快云博客本文首先通过具体的例子讲解了Lua中闭包的概念,然后总结了闭包的应用场合,最后探讨了Lua中闭包的实现原理。闭包的概念在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非局部变量,那么它就是通常说原创 2022-04-26 16:48:00 · 638 阅读 · 0 评论 -
math.cos,math.sin
角度和弧度转换弧度 = 角度2π /360 =角度π / 180 = 角度 *Math.PI / 180角度 = 弧度360 / 2π = 弧度180 / π = 弧度 * 180 / Math.PI如何得到圆上每个点的坐标?两条重要公式邻边(x)= sin(角度对应弧度) * r对边(y) = cos(角度对应弧度) * rX坐标 = a + Math.sin(角度(Math.PI / 180))rY坐标 = b + Math.cos(角度(Math...原创 2022-01-25 10:53:31 · 778 阅读 · 0 评论 -
gamemath
-- 函数名 描述 示例 结果-- pi 圆周率 math.pi 3.1415926535898-- abs 取绝对值 math.abs(-2012) 2012-- ceil 向上取整 math.ceil(9.1) ...原创 2022-01-09 09:52:10 · 128 阅读 · 0 评论 -
lua中loadstring的运用
项目中用到loadstring,感觉这个东西挺有用的。例如我们游戏开启的时候 获取服务器中版本号和其他信息,这个信息是一个table,如果你去解析这个字符串的话,比较麻烦。直接用loadstring,该函数的返回值是返回一个function,如果load失败,则返回nil,test:local info = 'local map = {a = 1,b = 2};for _,v in pairs(map) do print(v) end'local fun = loadstring(info )p原创 2020-11-08 11:39:38 · 539 阅读 · 0 评论 -
lua table.nums
table.nums计算表格包含的字段数量。格式:count = table.nums(表格对象)Lua 的“#”操作可以取得表格的长度,但仅限从 1 开始连续数字为索引的表格。table.nums() 可以计算任何表格的长度。原创 2020-08-06 09:40:56 · 444 阅读 · 0 评论 -
cocos2dx 之[CSLoader]的额外应用
1.--lua版本self.tNodeChild = {}local callBack = function(ref)local name = ref:getName()self.tNodeChild [name] = refendlocal csbnode = cc.CSLoader:createNode(csbFile,callBack)CSLoader 这个方法很常用 不就是用来加载csb文件么。 但是他后面可以添...原创 2020-07-26 12:06:52 · 288 阅读 · 0 评论 -
打印lua中的全局变量表_G
local tablePrinted = {}function printTableItem(k, v, level) for i = 1, level do io.write(" ") end io.write(tostring(k), " = ", tostring(v), "\n") if type(v) == "table" then if not tablePrinted[v] then ...原创 2020-06-03 22:26:33 · 1355 阅读 · 0 评论 -
lua元表
__tostring 元方法__tostring 元方法用于修改表的输出行为。以下实例我们自定义了表的输出内容:__call 元方法__call 元方法在 Lua 调用一个值时调用。以下实例演示了计算表中元素的和:__add...原创 2020-06-02 16:50:14 · 135 阅读 · 0 评论 -
cocos2d-x lua 调用onEnter和onExit
onEnter和onExit在lua中不会因节点别add和remove而直接被调用,当子节点被父节点add和remove时,会发送enter和exit的消息,所以需要再初始化节点的时候,监听消息,并在收到消息后调用onEnter或onExit。local function onNodeEvent(event)if event == "enter" then self:onEnter()elseif event == "exit" then self:onExit()end...原创 2020-05-24 19:55:24 · 468 阅读 · 0 评论 -
cocos2dx+lua注册事件函数举例20200512
https://blog.youkuaiyun.com/tutuboke/article/details/39548735参考coocs2dx 版本 3.1.1registerScriptTouchHandler 注册触屏事件registerScriptTapHandler 注册点击事件registerScriptHandler 注册基本事件 包括 触屏 层的进入 退出 事件registe...原创 2020-05-12 16:51:12 · 193 阅读 · 0 评论 -
lua协同程序理解
参考:https://blog.youkuaiyun.com/booirror/article/details/39808817协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程,而协程是通过协作来完成,任何时刻只有一个协程程序在运行。并且这个在运行的协程只有明...原创 2020-05-07 20:58:38 · 187 阅读 · 1 评论 -
lua require package.path package.loaded _G
参考https://blog.youkuaiyun.com/duke_geng/article/details/41844175简介require函数像dofile一样载入文件为一个Chunk并执行。但具有两个好处:1. 按模式加载文件 2.不会重复载入相同的文件require和package.path的关系典型的package.path值如下(其中D:Bin为lua.exe所在目录):.?.lua...原创 2020-04-27 22:09:19 · 598 阅读 · 0 评论 -
cocos2d-x Lua开局的初始化和MianScene的初始化20200422
main.lua xpcall()->mian()-> AppBase.lua ctor()->MyApp.lua onCreate()-> run()->enterScene()->createView()->ViewBase.lua ctor()->MainScene.lua onCreate()难点在于 为何会调用ctor的方法?因为...原创 2020-04-22 14:33:37 · 267 阅读 · 0 评论 -
lua_rawget,lua_rawset,lua_rawgeti,lua_rawseti继续理解
lua_gettable和lua_settable都可以操作table。void lua_gettable (lua_State *L, int index);把t[k]值压入堆栈, 这里的t是指有效索引index指向的值, 而k则是栈顶放的值。这个函数会弹出堆栈上的 key (把结果放在栈上相同位置)。 在 Lua 中,这个函数可能触发对应 "index" 事件的元方...原创 2020-04-13 22:02:53 · 1607 阅读 · 0 评论 -
将lua源码编译成静态文件,实现c++和lua相互调用
学习怎么在c++中引用lua,并实现在c++中调用lua文件工具:lua源码,vs20131.下载lua源码(地址:http://www.lua.org)2.将lua源码编译成静态文件(我这里只编译了lua链接库,lua编译器和lua解释器暂时不需要)新建一个VC++的win32控制台工程,命名为Lua53,添加【新建筛选器】,再把lua源码.h和.c文件添加进去,(除去lua...原创 2020-04-06 19:47:07 · 652 阅读 · 0 评论 -
Lua操作栈c调用lua
让我们看看下面例子C++调用LUA函数的例子栈的使用情况#include "stdafx.h"int main(){ //新建一个lua状态 lua_State *pLua = luaL_newstate(); if( nullptr == pLua ) { return 0; } //得到初始化栈大小 pr...原创 2020-03-02 10:08:10 · 578 阅读 · 0 评论 -
Lua中的require与package.loaded
require (modname)加载一个模块。 这个函数首先查找 package.loaded 表, 检测 modname 是否被加载过。 如果被加载过,require 返回 package.loaded[modname] 中保存的值。 否则,它试着为模块寻找 加载器 。require 遵循 package.searchers 序列的指引来查找加载器。 如果改变这个序列,我们可以改变 re...原创 2020-02-09 14:03:23 · 199 阅读 · 0 评论 -
os.date;字符分类
os.date字符分类原创 2020-01-10 08:54:34 · 125 阅读 · 0 评论 -
lua module 函数
lua5.1之后增加了module函数,本文通过一系列测试代码来阐述这个函数的作用通常情况下,我们调用另一个Lua代码文件一般都会使用require函数,比如:上面的代码执行结果,输出Func1100Func2null我们得出以下的结论1.Func1属于JCTest,需要显示表达出来。2.require返回的是一个table。3.JCTest这个tab...原创 2020-01-07 09:13:01 · 256 阅读 · 0 评论 -
lua中的setfenv和getfenv
设置函数环境——setfenv当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题。setfenv函数可以满足我们的需求。 setfenv(f, table):设置一个函数的环境 (1)当第一个参数为一个函数时,表示设置该函数的环境 (2)当第一个参数为一个数字时,为1代表当前函数,2代...原创 2020-01-06 09:16:25 · 833 阅读 · 0 评论 -
Lua tostring()
前言前面一篇文章我们介绍了把参数转换成数字的函数,今天来看一个把参数转换成字符串的函数,话说这个函数我在写lua的时候几乎每天都用到,这个函数适应性简直太强了,无论你传给它什么参数,它都能转换成字符串,而今天我看了一下文档,发现这个函数居然还有进阶的用法,我们一起来看一下吧!内容tostringtostring (e) 解释:这个函数能接收任何类型的参数,并且将参数转换成...原创 2020-01-03 09:39:26 · 22935 阅读 · 0 评论 -
y%x math.fmod(y,x)的区别详细讲解
y%x = y - (y/x)*xmath.fmod(y,x) = y - (y/x)*x只是y/x(商)的取值方式各有不同: y%x运算总是将y/x的值向下取整,而math.fmod(y,x)是将y/x的值向0取整。举例:1)-2%3 = -2 - (-2/3)*3= -2 - math.floor(-2/3)*3= -2 - math.floor(-0.666666666)*3=...原创 2019-12-27 14:16:40 · 1513 阅读 · 0 评论 -
Lua os.date()
原型:os.date ([format [, time]]) 解释:返回一个按format格式化日期、时间的字串或表如果format以“!”开头,则按格林尼治时间进行格式化。 如果format是一个“*t”,将返一个带year(4位),month(1-12), day (1--31), hour (0-23), min (0-59),sec (0-61),wday (星期几, 星期...原创 2019-12-25 11:47:00 · 496 阅读 · 0 评论 -
lua调用c,c调用lua
对于每一种可以呈现在lua中的c类型,API都有一个对应的压入函数2.检测栈中是否有足够的空间3.查询元素类型4.演示一个打印栈中所有的内容5.其他的栈操作...原创 2019-12-18 09:39:40 · 129 阅读 · 0 评论 -
lua的string库函数总结
Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。字符串库中的一些函数是非常简单的:string.len(s) 返回字符串s的长度;string.rep(s, n) 返回重复n次字符串s的串;你使用string.rep("a", 2^20)...原创 2019-12-12 21:32:12 · 866 阅读 · 0 评论 -
Lua中的table函数库
参考:https://www.cnblogs.com/whiteyun/archive/2009/08/10/1543139.htmlconcat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔...原创 2019-12-12 09:25:19 · 164 阅读 · 0 评论 -
lua变长参数 笔记
Lua变长参数:Lua支持变长参数,使用简单(借助于table、多重赋值),Lua中的函数还可以接受不同数量的实参。例如:在调用print时可以传入一个、两个或多个实参。参数中的三个点(...)表示该函数可接受不同数量的实参。当这个函数被调用时,它的所有参数都会被收集到一起,这部分收集起来的实参称为这个函数的“变长参数”。一个函数要访问他的变长参数时,仍需要用到3个点...原创 2019-12-11 21:39:20 · 175 阅读 · 0 评论 -
垃圾收集器间歇率和垃圾收集器步进倍率
垃圾收集器步进倍率控制着收集器运作速度相对于内存分配速度的倍率。增大这个值不仅会让收集器更加积极,还会增加每个增量步骤的长度。 不要把这个值设得小于 100 , 那样的话收集器就工作的太慢了以至于永远都干不完一个循环。 默认值是 200 ,这表示收集器以内存分配的"两倍"速工作。垃圾收集器间歇率控制着收集器需要在开启新的循环前要等待多久增大这个值会减少收集器的积极性。 当这个...原创 2019-12-11 11:30:25 · 528 阅读 · 0 评论 -
lua基础函数 type,tonumber,tostring,pcall,print
type(v)用来判断v的类型返回字符串"nil", "number", "string", "boolean", "table", "function", "thread", "userdata"tonumber(e [,base])把e(必须为数字或者是可以转成数字的字符串)转成10进制数字,base为多少进制(可以为2-36),默认为10例子--把16进制a装成10进制...原创 2019-11-28 11:06:52 · 549 阅读 · 0 评论 -
《Cocos2d-x-3.2 Lua-tests》文件详解 之 基本绘图DrawPrimitives
--[[ cocos2d-x基本图形的绘制--]]local function drawPrimitivesMainLayer() local kItemTagBasic = 1000 local testCount = 2 local maxCases = testCount local curCase = 0 local size = c...原创 2019-11-21 10:55:52 · 461 阅读 · 0 评论 -
lua基础函数 type,tonumber,tostring,pcall,print
type(v)用来判断v的类型返回字符串"nil", "number", "string", "boolean", "table", "function", "thread", "userdata"tonumber(e [,base])把e(必须为数字或者是可以转成数字的字符串)转成10进制数字,base为多少进制(可以为2-36),默认为10例子--把16进制a装成10进制...原创 2019-11-18 21:14:35 · 510 阅读 · 0 评论