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

简介:

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

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

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

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

 

 

 

 

 
 
  1. -- mac 上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花 - - 
  2. -- 注释语句 
  3.   
  4. --[[   
  5. 注释段落语句 
  6.   ]]-- 
  7.   
  8. --引用其他lua文件,不需要加上(.lua)后缀 
  9. --require "xx" 
  10.   
  11. --变量不需要定义,可以直接赋值 
  12. count = 100  --成员变量 
  13. local count =100  --局部变量 
  14.   
  15. --方法定义 
  16. function hello(...) 
  17.     --打印 
  18.     print("Hello Lua!"); 
  19.     print(string.format(...)) 
  20. end 
  21.   
  22. -- 每一行代码不需要使用分隔符,当然也可以加上 
  23. -- 访问没有初始化的变量,lua默认返回nil 
  24.   
  25. -- 调用函数形式 
  26. hello("你懂的"
  27.   
  28. --打印变量的类型 
  29. isOK =false 
  30. print(type(isOK)) 
  31.   
  32. -- 基本变量类型 
  33. a =nil --Lua 中值为nil 相当于删除 
  34. b =10 
  35. c =10.4 
  36. d =false 
  37. --定义字符串,单引号,双引号都可以的 
  38. e ="i am" 
  39. d ='himi' 
  40.   
  41. --两个字符串的连接可以如下形式 
  42. stringA ="Hi" 
  43. stringB ="mi" 
  44. print(stringA..stringB) 
  45.   
  46. --另外Lua也支持转移字符,如下 
  47. print(stringA.."\n"..stringB); 
  48.   
  49. --修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT) 
  50. stringA=string.gsub(stringA,"Hi","WT"
  51. print(stringA); 
  52.   
  53. --将字符换成数字tonumber(不转也会自动转) 
  54. --将数字换成字符tostring(不转也会自动转) 
  55. stringC = "100" 
  56. stringC = tonumber(stringC) 
  57. stringC = stringC +20 
  58. stringC = tostring(stringC) 
  59. print(stringC) 
  60.   
  61. --取一个字符串的长度使用 # 
  62. print(#stringC) 
  63.   
  64. --创建 表 
  65. tableA ={} 
  66. m = "x" 
  67. tableA[m] =100 
  68. m2 ='y' 
  69. tableA[m2] =200 
  70. print(tableA["x"].."\n"..tableA.y) 
  71. --另外表还可以如下形式(从1开始) 
  72. tableB ={"4","5","6","7","8"
  73. print(tableB[1]) 
  74.   
  75. --算术操作符 
  76. c1 = 10+2 
  77. c2 = 10-2 
  78. c3 = 10*2 
  79. c4 = 10/2 
  80. c5 = 10^2 
  81. c6 = 10%2 
  82. c7 = -10+2 
  83. print(c1.."_"..c2.."_"..c3.."_"..c4.."_"..c5.."_"..c6.."_"..c7) 
  84.   
  85. --控制操作 
  86. --if then elseif then else end 
  87. abc =10 
  88. if  abc ==10 then 
  89.     print("v1"
  90. elseif abc == 9 then 
  91.     print("v2"
  92. else 
  93.     print("v3"
  94. end 
  95.   
  96. --for 
  97. --从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位 
  98. for i=4,10,2 do 
  99.     print("for1:"..i+1) 
  100. end 
  101. --也可以不制定最后一个参数,默认1的增长速度 
  102. for i=4,10 do 
  103.     print("for2:"..i+1) 
  104. end 
  105.   
  106. tableFor = {"himi1","himi2","himi3","himi4","himi5"
  107. for k,v in pairs(tableFor) do 
  108.     print("for3:key:"..k.."value:"..v) 
  109. end 
  110.   
  111. --while 
  112. w1 = 20 
  113. while true do 
  114.     w1=w1+1 
  115.     if w1 ==25 then 
  116.         break 
  117.     end 
  118. end 
  119. print("whlile:"..w1) 
  120.   
  121. --repeat 
  122.     aa =20 
  123.     repeat aa = aa+2 
  124.         print("repeat:"..aa) 
  125.     until aa>28 
  126.   
  127. --关系操作符 
  128. --需要注意的是不等于符号 ~=  而不是!= 
  129. ax =10 
  130. bx =20 
  131.   
  132. if ax >bx then 
  133.     print("GX1"
  134. elseif ax<bx then 
  135.     print("GX2"
  136. elseif ax>=bx then 
  137.     print("GX3"
  138. elseif ax<=bx then 
  139.     print("GX4"
  140. elseif ax==bx then 
  141.     print("GX5"
  142. elseif ax~=bx then 
  143.     print("GX6"
  144. else 
  145.     print("GX7"
  146. end 

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

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

 

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

 

 
 
  1. --函数详解 
  2.   
  3. --有一个返回值的函数 
  4. function funTestBackOne(aCount) 
  5.     local aCount= aCount+1 
  6.     return aCount 
  7. end 
  8.   
  9. a =20 
  10. print(funTestBackOne(a)) 
  11.   
  12. --有多个返回值的函数 
  13. function funTestBackMore() 
  14.     return 2,3 
  15. end 
  16.   
  17. a,b =funTestBackMore() 
  18. print(a.." and "..b) 
  19.   
  20. --有变长参数的函数 
  21. function funTestUnKnow( ... ) 
  22.     print(...) 
  23. end 
  24. funTestUnKnow(a,b,"Himi"
  25.   
  26. --闭合函数(一个函数写在另外一个函数内) 
  27. function funTest1( ... ) 
  28.     local d = 12; 
  29.     d=d+... 
  30.     function funTest2( ... ) 
  31.         print(d) 
  32.     end 
  33.     funTest2() 
  34. end 
  35.   
  36. funTest1(100) 

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









本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/1173219,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
存储 NoSQL 关系型数据库
使用lua脚本操作redis
使用lua脚本操作redis
48 0
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
56 0
|
2月前
|
算法 NoSQL Java
springboot整合redis及lua脚本实现接口限流
springboot整合redis及lua脚本实现接口限流
63 0
|
12天前
|
NoSQL Java Redis
lua脚本做redis的锁
这段内容是关于使用Redis实现分布式锁的Java代码示例。`RedisLock`类包含`lock`和`unlock`方法,使用`StringRedisTemplate`和Lua脚本进行操作。代码展示了两种加锁方式:一种带有过期时间,另一种不带。还提到了在加锁和解锁过程中的异常处理,并提供了相关参考资料链接。
17 3
|
15天前
|
存储 NoSQL 数据处理
Redis Lua脚本:赋予Redis更强大的逻辑与功能
Redis Lua脚本:赋予Redis更强大的逻辑与功能
|
28天前
|
监控
通过Lua脚本实现禁止员工上班玩游戏的软件的自动化任务管理
使用Lua脚本,企业可以自动化管理员工行为,防止上班时间玩游戏。Lua是一种轻量级脚本语言,适合编写监控任务。示例脚本展示了如何检测工作时间内员工是否玩游戏,并在发现时执行相应操作,如关闭游戏或发送警告。此外,另一脚本演示了如何将监控数据通过HTTP POST自动提交到网站,以实现有效的行为管理。这种解决方案灵活且可定制,有助于提升工作效率。
96 1
|
1月前
|
NoSQL Java 数据库
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
优惠券秒杀案例 - CAS、Redis+Lua脚本解决高并发并行
|
1月前
|
Java API Maven
|
2月前
|
NoSQL Java 数据处理
Redis和Spring Boot的绝佳组合:Lua脚本的黑科技
Redis和Spring Boot的绝佳组合:Lua脚本的黑科技
51 0
|
3月前
|
存储 NoSQL 关系型数据库
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
68 0