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

简介:

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

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

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

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

 

 

QQ20130406-1@2x

 

 


  
  
  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,如需转载请自行联系原作者
目录
相关文章
|
1天前
|
监控 安全
公司用什么软件监控电脑:Lua 脚本在监控软件扩展功能的应用
在企业环境中,电脑监控软件对保障信息安全、提升效率至关重要。Lua 脚本在此类软件中用于扩展功能,如收集系统信息、监控软件使用时长及文件操作,向指定服务器发送数据,支持企业管理和运营。
16 6
|
6月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
237 0
|
2月前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
33 2
|
3月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
4月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
6月前
|
NoSQL API Redis
使用Redis Lua脚本实现高级限流策略
使用Redis Lua脚本实现高级限流策略
211 0
|
6月前
|
消息中间件 NoSQL Java
Spring Boot中使用Redis和Lua脚本实现延时队列
Spring Boot中使用Redis和Lua脚本实现延时队列
|
7月前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
257 1
|
7月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
264 0
|
6月前
|
JSON 监控 数据格式
使用Lua代码扩展上网行为管理软件的脚本功能
本文介绍了如何使用Lua脚本增强上网行为管理,包括过滤URL、记录用户访问日志、控制带宽和自动提交监控数据到网站。Lua是一种轻量级语言,适合编写扩展脚本。文中提供多个示例代码,如URL过滤器、用户活动日志记录器和带宽控制器,帮助用户根据需求定制网络管理功能。通过这些示例,用户可以快速掌握Lua在上网行为管理中的应用。
179 4