1.functions.lua (framework->functions.lua)

提供一组常用函数,以及对 Lua 标准库的扩展

1.printf

2.checknumber checkint checkbool checktable isset3.深度克隆一个值 clone

4.创建一个类 class

5.载入一个模块 import() 与 require() 功能相同,但具有一定程度的自动化特性

6.将 Lua 对象及其方法包装为一个匿名函数
  在 quick-cocos2d-x 中,许多功能需要传入一个 Lua 函数做参数,
  然后在特定事件发生时就会调用传入的函数。例如触摸事件、帧事件等等。
  ~~~ lua

local MyScene = class("MyScene", function()
  return display.newScene("MyScene")
  end)

function MyScene:ctor()
  self.frameTimeCount = 0
  -- 注册帧事件
  self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, self.onEnterFrame)
  self:scheduleUpdate()
  end

function MyScene:onEnterFrame(dt)
  self.frameTimeCount = self.frameTimeCount + dt
  end

~~~

上述代码执行时将出错,报告"Invalid self" ,这就是因为 C++ 无法识别 Lua 对象方法。因此在调用我们传入的 self.onEnterFrame 方法时没有提供正确的参数。

要让上述的代码正常工作,就需要使用 handler() 进行一下包装:

~~~ lua

function MyScene:ctor()
self.frameTimeCount = 0
-- 注册帧事件
self:addNodeEventListener(cc.ENTER_FRAME_EVENT, handler(self, self.onEnterFrame))
self:scheduleUpdate()
end

~~~

实际上,除了 C++ 回调 Lua 函数之外,在其他所有需要回调的地方都可以使用 handler()。

7.math的一些方法
  (1)math.newrandomseed()根据系统时间初始化随机数种子,让后续的 math.random() 返回更随机的值
  (2)math.round(value) 对数值进行四舍五入,如果不是数值则返回 0
  (3)math.angle2radian(angle) 角度转弧度
  (4)math.radian2angle(radian) 弧度转角度

8.io

(1)io.exists(path) 文件是不是存在 注:调用的 io.open(path, "r")判断
  (2)io.readfile(path)读取文件内容 io.open(path, "r") file:read("*a")
  (3)io.writefile(path, content, mode)
      以字符串内容写入文件,成功返回 true,失败返回 false
      "mode 写入模式" 参数决定 io.writefile() 如何写入内容,可用的值如下:
      - "w+" : 覆盖文件已有内容,如果文件不存在则创建新文件
      - "a+" : 追加内容到文件尾部,如果文件不存在则创建文件
      此外,还可以在 "写入模式" 参数最后追加字符 "b" ,表示以二进制方式写入数据,这样可以避免内容写入不完整。
      **Android 特别提示:** 在 Android 平台上,文件只能写入存储卡所在路径,assets 和 data 等目录都是无法写入的。

(4)io.pathinfo(path) 拆分一个路径字符串,返回组成路径的各个部分
    例子:
    local pathinfo = io.pathinfo("/var/app/test/abc.png")
    -- 结果:
    -- pathinfo.dirname = "/var/app/test/"
    -- pathinfo.filename = "abc.png"
    -- pathinfo.basename = "abc"
    -- pathinfo.extname = ".png"
(5)io.filesize(path) 返回指定文件的大小,如果失败返回 false

9.table

(1)table.nums(t) Lua table 的 "#" 操作只对依次排序的数值下标数组有效,table.nums() 则计算 table 中所有不为 nil 的值的个数。
  (2)table.keys(hashtable) 返回所有的key
  (3)table.values(hashtable) 返回所有的值
  (4)table.merge(dest, src)将来源表格中所有键及其值复制到目标表格对象中,如果存在同名键,则覆盖其值
  (5)table.indexof(array, value, begin)从表格中查找指定值,返回其索引,如果没找到返回 false
  (6)table.keyof(hashtable, value)从表格中查找指定值,返回其 key,如果没找到返回 nil
  (7)table.removebyvalue(array, value, removeall)从表格中删除指定值,返回删除的值的个数
  (8)table.map(t, fn) 对表格中每一个值执行一次指定的函数,并用函数返回值更新表格内容
      fn 参数指定的函数具有两个参数,并且返回一个值。原型如下:
      function map_function(value, key)
      return value
      end
(9)table.walk(t, fn) 对表格中每一个值执行一次指定的函数,但不改变表格内容
    fn 参数指定的函数具有两个参数,没有返回值。原型如下:
    function map_function(value, key)
    end
(10)table.filter(t, fn)

(11)table.unique(t, bArray)遍历表格,确保其中的值唯一

(12)string.htmlspecialchars(input)将特殊字符转为 HTML 转义符

(13)string.restorehtmlspecialchars(input)将 HTML 转义符还原为特殊字符,功能与 string.htmlspecialchars() 正好相反

(14)string.nl2br(input)

(15)string.split(input, delimiter)
  -- 用指定字符或字符串分割输入字符串,返回包含分割结果的数组
  -- @function [parent=#string] split
  -- @param string input 输入字符串
  -- @param string delimiter 分割标记字符或字符串
  -- @return array#array 包含分割结果的数组

(16)string.ltrim(input) 去除输入字符串头部的空白字符,返回结果

(17)string.formatnumberthousands(num)将数值格式化为包含千分位分隔符的字符串 正则表达

print(string.formatnumberthousands(1924235))
    -- 输出 1,924,235

quick lua 3.3常用方法和学习技巧之functions.lua目录的更多相关文章

  1. quick lua 3.3常用方法和学习技巧之transition.lua

    transition.lua主要是动作相关的操作. -------------------------------- -- @module transition --[[-- 为图像创造效果 ]] l ...

  2. 老司机浅谈linux系统学习技巧

    Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...

  3. uLua学习之读取外部Lua脚本(四)

    前言 上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了.想想 ...

  4. 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧

    云计算概念一旦产生便一发不可收拾,成为移动互联网时代最为火热的行业之一.国内各大互联网公司例如阿里.腾讯.百度.网易等纷纷推出自己的云计算产品,3月10日,腾讯云0.01元投标时间更是让云计算在普罗大 ...

  5. Lua学习 2) —— Android与Lua互调

    2014-07-09 一.Android类调用lua并回调 Android调用Lua函数,同一时候把类作为參数传递过去.然后再Lua中回调类的函数 调用lua mLuaState = LuaState ...

  6. 《Qt 学习之路 2》目录

    <Qt 学习之路 2>目录 <Qt 学习之路 2>目录  豆子  2012年8月23日  Qt 学习之路 2  177条评论 <Qt 学习之路 2>目录 序 Qt ...

  7. Java学习-043-获取文件在目录中的路径

    我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...

  8. 【Head-First设计模式】C#版-学习笔记-开篇及文章目录

    原文地址:[Head-First设计模式]C#版-学习笔记-开篇及文章目录 最近一年断断续续的在看技术书,但是回想看的内容,就忘了书上讲的是什么东西了,为了记住那些看过的东西,最好的办法就是敲代码验证 ...

  9. Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)

    tomcat学习(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天学习TOMCAT,主要学习的是Tomcat的目录结构,配置文件! 1:Tomcat简介 Tomcat 服务器是一个免费 ...

随机推荐

  1. Java基础之一组有用的类——使用Scanner对象(TryScanner)

    控制台程序. java.util.Scanner类定义的对象使用正则表达式来扫描来自各种源的字符输入,并把输入显示为各种基本类型的一系列标记或者显示为字符串. 默认情况下,Scanner对象读取标记时 ...

  2. c++ DISALLOW_COPY_AND_ASSIGN

    Google C++编程规范 – 第三十二条 -<拷贝构造函数> [规范] 仅在确认需要的时候,才定义拷贝构造函数和赋值运算符:否则,请使用DISALLOW_COPY_AND_ASSIGN ...

  3. java类的定义以及参数传递

    class类(类似结构体)的定义 import java.util.Scanner; import java.io.*; class student{//类的名称 public String name ...

  4. 王家林 大数据Spark超经典视频链接全集[转]

    压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan ...

  5. return 的用法 初探

    #include<stdio.h> int imin(int ,int ); int main() { int evil1,evil2; ) //注意 第二个%d后面不能有空格,大概这就是 ...

  6. fackbook的Fresco的Image Pipeline以及自身的缓存机制

    fackbook的Fresco的Image Pipeline以及自身的缓存机制 配置之前.首先需要知道两点:一点是Bitmap缓存.一点是如果你仅仅需要一个缓存,那么不调用setSmallImageD ...

  7. ActivityGroup中EditText无法删除的问题

    坑,以前比较少用ActivityGroup,最近使用才发现ActivityGroup中多个Activity中如果都有Edittext是无法后退删除. 网上说有种方法监听dispatchKeyEvent ...

  8. YZM的全排列

    50073081 YZM的全排列 [试题描述] 一天,老师给可怜的YZM出了一道题:写出1~n的全排列.YZM写了一天也没写出来.请你帮帮快跪的YZM,输出1~n的全排列.注:这里n为9 [输入要求] ...

  9. android 项目学习随笔十一(ListView下拉刷新提示)

    1. 设置mHeaderView.setPadding TOPPADING为负值,隐藏刷新提示头布局 在onTouchEvent事件中进行头布局显示隐藏切换 import java.text.Simp ...

  10. web跨页弹窗选值

    最近在项目中看到这样一种效果——点击当前网页文本框,然后弹出一个缩小的网页,并在网页里选择或填写数据,然后又返回当前网页,小网页关闭.感觉非常不错,其实在以前网上也看见过,只是当时没有留心.今天抽时间 ...