zoukankan      html  css  js  c++  java
  • quick lua 3.3常用方法和学习技巧之functions.lua目录

    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

  • 相关阅读:
    python可视化---axvspan()函数
    python可视化---axhline()函数
    Git 操作
    miui10 傻瓜式安装google框架方法
    python 制作一对一聊天
    Pyqt5+python+ErIC6+QT designer
    session 详细解析(转)
    #Week7 Neural Networks : Learning
    Multilayer Perceptron
    Advice for applying ML & ML System Design
  • 原文地址:https://www.cnblogs.com/zhangfeitao/p/4496762.html
Copyright © 2011-2022 走看看