0
点赞
收藏
分享

微信扫一扫

【COCOS2DX-LUA 脚本开发之二】LUA语言基础



本站文章均为​​李华明Himi​​​原创,转载务必在明显处注明:(作者新浪微博:​​@李华明Himi​​​) 



从今天开始,往后将陆续更新Lua教程,主要是搭载Cocos2dx ,有任何疑惑或者不对的地方,尽情指正、交流、探讨。

那么首先肯定是Lua语言基础的知识点,下面直接附上代码,注释已经很清楚,无需赘述。

这里顺便给大家推荐一款mac os上的文本编辑器,好用支持多语言编辑,oc,c,c++,java,lua,js,html等等等

TextMate,图标是个菊花 – -。   下载地址:​​http://macromates.com​​

 


​-- mac 上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花 - -​

​-- 注释语句​


 

​--[[  ​

​注释段落语句​

​  ​​​​]]​​​​--​


 

​--引用其他lua文件,不需要加上(.lua)后缀​

​--require "xx"​


 

​--变量不需要定义,可以直接赋值​

​count ​​​​=​​​​100​​​​--成员变量​

​local​​​​count ​​​​=​​​​100​​​​--局部变量​


 

​--方法定义​

​function hello​​​​(​​​​...​​​​)​

​    ​​​​--打印​

​    ​​​​print​​​​(​​​​"Hello Lua!"​​​​)​​​​;​

​    ​​​​print​​​​(​​​​string​​​​.format​​​​(​​​​...​​​​)​​​​)​

​end​


 

​-- 每一行代码不需要使用分隔符,当然也可以加上​

​-- 访问没有初始化的变量,lua默认返回nil​


 

​-- 调用函数形式​

​hello​​​​(​​​​"你懂的"​​​​)​


 

​--打印变量的类型​

​isOK ​​​​=​​​​false​

​print​​​​(​​​​type​​​​(​​​​isOK​​​​)​​​​)​


 

​-- 基本变量类型​

​a ​​​​=​​​​nil ​​​​--Lua 中值为nil 相当于删除​

​b ​​​​=​​​​10​

​c ​​​​=​​​​10.4​

​d ​​​​=​​​​false​

​--定义字符串,单引号,双引号都可以的​

​e ​​​​=​​​​"i am"​

​d ​​​​=​​​​'himi'​


 

​--两个字符串的连接可以如下形式​

​stringA ​​​​=​​​​"Hi"​

​stringB ​​​​=​​​​"mi"​

​print​​​​(​​​​stringA..stringB​​​​)​


 

​--另外Lua也支持转移字符,如下​

​print​​​​(​​​​stringA..​​​​"\n"​​​​..stringB​​​​)​​​​;​


 

​--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)​

​stringA​​​​=​​​​string​​​​.gsub​​​​(​​​​stringA​​​​,​​​​"Hi"​​​​,​​​​"WT"​​​​)​

​print​​​​(​​​​stringA​​​​)​​​​;​


 

​--将字符换成数字tonumber(不转也会自动转)​

​--将数字换成字符tostring(不转也会自动转)​

​stringC ​​​​=​​​​"100"​

​stringC ​​​​=​​​​tonumber​​​​(​​​​stringC​​​​)​

​stringC ​​​​=​​​​stringC ​​​​+​​​​20​

​stringC ​​​​=​​​​tostring​​​​(​​​​stringC​​​​)​

​print​​​​(​​​​stringC​​​​)​


 

​--取一个字符串的长度使用 #​

​print​​​​(​​​​#stringC)​


 

​--创建 表​

​tableA ​​​​=​​​​{​​​​}​

​m ​​​​=​​​​"x"​

​tableA[m] ​​​​=​​​​100​

​m​​​​2​​​​=​​​​'y'​

​tableA[m​​​​2​​​​] ​​​​=​​​​200​

​print​​​​(​​​​tableA[​​​​"x"​​​​]..​​​​"\n"​​​​..tableA.y​​​​)​

​--另外表还可以如下形式(从1开始)​

​tableB ​​​​=​​​​{​​​​"4"​​​​,​​​​"5"​​​​,​​​​"6"​​​​,​​​​"7"​​​​,​​​​"8"​​​​}​

​print​​​​(​​​​tableB[​​​​1​​​​]​​​​)​


 

​--算术操作符​

​c​​​​1​​​​=​​​​10​​​​+​​​​2​

​c​​​​2​​​​=​​​​10​​​​-2​

​c​​​​3​​​​=​​​​10​​​​*​​​​2​

​c​​​​4​​​​=​​​​10​​​​/​​​​2​

​c​​​​5​​​​=​​​​10​​​​^​​​​2​

​c​​​​6​​​​=​​​​10​​​​%​​​​2​

​c​​​​7​​​​=​​​​-10​​​​+​​​​2​

​print​​​​(​​​​c​​​​1.​​​​.​​​​"_"​​​​..c​​​​2.​​​​.​​​​"_"​​​​..c​​​​3.​​​​.​​​​"_"​​​​..c​​​​4.​​​​.​​​​"_"​​​​..c​​​​5.​​​​.​​​​"_"​​​​..c​​​​6.​​​​.​​​​"_"​​​​..c​​​​7​​​​)​


 

​--控制操作​

​--if then elseif then else end​

​abc ​​​​=​​​​10​

​if​​​​abc ​​​​=​​​​=​​​​10​​​​then​

​    ​​​​print​​​​(​​​​"v1"​​​​)​

​elseif abc ​​​​=​​​​=​​​​9​​​​then​

​    ​​​​print​​​​(​​​​"v2"​​​​)​

​else​

​    ​​​​print​​​​(​​​​"v3"​​​​)​

​end​


 

​--for​

​--从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位​

​for​​​​i​​​​=​​​​4​​​​,​​​​10​​​​,​​​​2​​​​do​

​    ​​​​print​​​​(​​​​"for1:"​​​​..i​​​​+​​​​1​​​​)​

​end​

​--也可以不制定最后一个参数,默认1的增长速度​

​for​​​​i​​​​=​​​​4​​​​,​​​​10​​​​do​

​    ​​​​print​​​​(​​​​"for2:"​​​​..i​​​​+​​​​1​​​​)​

​end​


 

​tableFor ​​​​=​​​​{​​​​"himi1"​​​​,​​​​"himi2"​​​​,​​​​"himi3"​​​​,​​​​"himi4"​​​​,​​​​"himi5"​​​​}​

​for​​​​k​​​​,​​​​v ​​​​in​​​​pairs​​​​(​​​​tableFor​​​​)​​​​do​

​    ​​​​print​​​​(​​​​"for3:key:"​​​​..k..​​​​"value:"​​​​..v​​​​)​

​end​


 

​--while​

​w​​​​1​​​​=​​​​20​

​while ​​​​true​​​​do​

​    ​​​​w​​​​1​​​​=​​​​w​​​​1​​​​+​​​​1​

​    ​​​​if​​​​w​​​​1​​​​=​​​​=​​​​25​​​​then​

​        ​​​​break​

​    ​​​​end​

​end​

​print​​​​(​​​​"whlile:"​​​​..w​​​​1​​​​)​


 

​--repeat​

​    ​​​​aa ​​​​=​​​​20​

​    ​​​​repeat​​​​aa ​​​​=​​​​aa​​​​+​​​​2​

​        ​​​​print​​​​(​​​​"repeat:"​​​​..aa​​​​)​

​    ​​​​until aa​​​​>​​​​28​


 

​--关系操作符​

​--需要注意的是不等于符号 ~=  而不是!=​

​ax ​​​​=​​​​10​

​bx ​​​​=​​​​20​


 

​if​​​​ax ​​​​>​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX1"​​​​)​

​elseif ax​​​​<​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX2"​​​​)​

​elseif ax​​​​>​​​​=​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX3"​​​​)​

​elseif ax​​​​<​​​​=​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX4"​​​​)​

​elseif ax​​​​=​​​​=​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX5"​​​​)​

​elseif ax~​​​​=​​​​bx ​​​​then​

​    ​​​​print​​​​(​​​​"GX6"​​​​)​

​else​

​    ​​​​print​​​​(​​​​"GX7"​​​​)​

​end​


 

其中主要需要注意的是,判断语句不等于,不再是!= ,在Lua中是~=

源码下载地址:​​ http://vdisk.weibo.com/s/wwgnO​​

另外关于一些常见的函数如下详解:

 


​--函数详解​


 

​--有一个返回值的函数​

​function funTestBackOne​​​​(​​​​aCount​​​​)​

​    ​​​​local​​​​aCount​​​​=​​​​aCount​​​​+​​​​1​

​    ​​​​return​​​​aCount​

​end​


 

​a ​​​​=​​​​20​

​print​​​​(​​​​funTestBackOne​​​​(​​​​a​​​​)​​​​)​


 

​--有多个返回值的函数​

​function funTestBackMore​​​​(​​​​)​

​    ​​​​return​​​​2​​​​,​​​​3​

​end​


 

​a​​​​,​​​​b ​​​​=​​​​funTestBackMore​​​​(​​​​)​

​print​​​​(​​​​a..​​​​" and "​​​​..b​​​​)​


 

​--有变长参数的函数​

​function funTestUnKnow​​​​(​​​​... ​​​​)​

​    ​​​​print​​​​(​​​​...​​​​)​

​end​

​funTestUnKnow​​​​(​​​​a​​​​,​​​​b​​​​,​​​​"Himi"​​​​)​


 

​--闭合函数(一个函数写在另外一个函数内)​

​function funTest​​​​1​​​​(​​​​... ​​​​)​

​    ​​​​local​​​​d ​​​​=​​​​12​​​​;​

​    ​​​​d​​​​=​​​​d​​​​+​​​​...​

​    ​​​​function funTest​​​​2​​​​(​​​​... ​​​​)​

​        ​​​​print​​​​(​​​​d​​​​)​

​    ​​​​end​

​    ​​​​funTest​​​​2​​​​(​​​​)​

​end​


 

​funTest​​​​1​​​​(​​​​100​​​​)​


 

掌握这些Lua语言基础,基本足够你使用了。

 

举报

相关推荐

Cocos2dx-lua ScrollView[一]基础篇

cocos2dx_lua卡牌翻转

0 条评论