cocos2d-x学习笔记

1.新建的lua项目使用print()函数无法打印日志的问题

   解决:是因为lua项目用的是babelua插件,本身不能输出日志到窗口。不运行lua项目,而是运行C++就能看到输出日志。然后编译出新的模拟器后再运行lua项目就能看到日志了。

   

 

2.lua语法

--[[

Lua语法注意事项:
1.function前一定要加local
2.函数必要要在调用代码的前面
3.定义每个变量,前面都要加local,在方法中加local就是方法内的局部变量,在方法外加local就是文件级别的全局变量

--]]



local function printTest()
    print(type(""))
    print(type(100))
    print(type(100.0))
    print(type(true))
    print(type(print))
    print(type(nil))
    print(type( { x = 10, y = 20 }))
end

local function funTest()
    local s = 123
    print(tostring(s))

    local r = true
    if (s == 1213) then
        print(tonumber(r))
    else
        print("nonono")
    end
end

local function funFor()
    for i = 1, 5 do
        print(i)
    end
end

local function funWhile()
    local i = 0
    while i < 5 do
        print(i)
        i = i + 1
    end
end

local function funRepeat()
    local i = 0
    repeat
        i = i + 1
        print("Repeat " .. i)
    until (i > 5)
end

local function funForIn()
    local arr = { 2, 3, 4, 1, 45, 321, 221 }
    for key, var in ipairs(arr) do
        print(key .. ":" .. var)
    end
end

--表变量
local function funObj()
    local obj = { id = 1, name = "zhangsan" }
    print(obj.id)
    print(obj.name)
    for key, var in ipairs(obj) do
        print(key .. ":" .. var)
    end
end

local global = 1
local function funGlobal()
    local local1 = 3
    global = global + 1
    return global, local1
end

-- 函数内嵌套函数
local function calculate(opr, a, b)
    local function add(a, b)
        return a + b
    end

    local function sub(a, b)
        return a - b
    end

    local result
    if opr == "+" then
        result = add(a, b)
    else
        result = sub(a, b)
    end
    return result
end

-- 返回函数
local function rectangleArea(width, height)
    local area = width * height
    return area
end

local function triangleArea(bottom, height)
    local area = 0.5 * bottom * height
    return area
end

local function getArea(type)
    local returnFunction
    if type == "rect" then
        --        returnFunction = rectangleArea
        -- 匿名函数
        returnFunction = function(width, height)
            local area = width * height
            return area
        end
    else
        --        returnFunction = triangleArea
        -- 匿名函数
        returnFunction = function(bottom, height)
            local area = 0.5 * bottom * height
            return area
        end
    end
    return returnFunction
end


--Student = { id = 100, name = "Tony" }
--local function Student.toString()
--    local s = "Name:" .. self.name .. " id:" .. self.id
--    return s
--end





local function init()
    cc.exports.MY_GLOBAL = "hello"
    funTest()
    printTest()
    funFor()
    funWhile()
    funRepeat()
    funForIn()
    funObj()
    local i1, i2 = funGlobal()
    print(i1 .. ' .. ' .. i2)

    print("global" .. global)
    if (local1 == nil) then
        print("local1 is nil")
    else
        print("local1" .. local1)
    end

    local res1 = calculate("+", 10, 5)
    print("10+5=" .. res1)

    local res2 = calculate("-", 10, 5)
    print("10-5=" .. res2)

    local area = getArea("tria")
    print("底10高13,三角形面积:" .. area(10, 15))

    local area = getArea("rect")
    print("宽10高15,计算长方形面积:" .. area(10, 15))

--    print(Student.toString())
end

init()

return 1

 

3.通过引擎创建lua类

local LuaTestClass = class("LuaTestClass")

cc.updataDir="cc.updataDir"

LuaTestClass.a=1
LuaTestClass.b=2

function LuaTestClass.funTest2()
    print("LuaTestClass.funTest2")
end

function LuaTestClass:funTest3()
    print("LuaTestClass.funTest3")
    self.funTest2() -- 通过self执行类的其他方法
end

function LuaTestClass:tostring()
   local s= "Name=" .. self.a .. " id=" .. self.b
   return s
end

return LuaTestClass

 

调用:

local testClass = require("app.LuaTestClass")
    print("cc.updataDir2" .. cc.updataDir)
    testClass.funTest2()
    testClass:funTest3()

   local s=testClass:tostring()
   print(s)

 

4.给lua项目添加cjson库

(1) cjson所在目录

 

(2) 引用cjson库

 

(3) 添加调用代码

 

(4) lua代码中调用 csjon 库

以上代码没有调用成功,待续。。。

 

posted on 2017-03-31 00:03  上校  阅读(213)  评论(0编辑  收藏  举报