cocos2dx lua基础篇

2020-12-24  本文已影响0人  余生only

Cocos2d-x lua 是 Cocos2d-x引擎添加了Lua绑定的版本。使用C++和Cocos2d-x引擎开发时,编写的代码是直接调用Cocos2d-x引擎的API,因为Cocos2d-x引擎也是使用C++编写的,所以无需进行语言转换。而使用Lua和Cocos2d-x编码时,编写的代码必须通过LuaEngine引擎执行,LuaEngine引擎封装了Cocos2d-x引擎的API,所以相当于使用Lua脚本在调用Cocos2d-x的API。了解相关信息可以看一下两个网站

cocos2dx 官方文档

cocos2d -lua社区版


先决条件:

.安装cocos studio 最新版本 

.安装vs2015【visual studio】

.Python2.7

cocos studio创建好项目后 直接

1点击 菜单 =》项目 =》发布与打包

2根据发布类型进行发布

代码结构参考:
【在Xcode工程 我们需要关注的代码都在 目录Resources/src/app/views 下面】
发布的csb文件就是场景的文件,具体看一下代码实例


local size = cc.Director:getInstance():getWinSize()

--注意路径
local TestScene = require("app/views/TestScene")

local MainScene = class("MainScene", cc.load("mvc").ViewBase)

-- 载入csb文件
MainScene.RESOURCE_FILENAME = "MainScene.csb"

function MainScene:onCreate()

    local isShow = false

    local director = cc.Director:getInstance()

    --载入csb文件
    local root = cc.CSLoader:createNode("MainScene.csb")
    self:addChild(root)

    -- 外部的 容器
    local rootP = root:getChildByName("rootP")

    --拿到图片
    local img = rootP:getChildByName("Center_img")

    --显示&隐藏 图片
    local btn_left = root:getChildByName("Button_left")
    btn_left:addTouchEventListener(function(sender, evt)
        if evt == 2 then
            print("坦克 ---> 左按钮")
            --self:getApp():enterScene("TestScene")

            if not(isShow) then
                print("来到了 没显示")

                --显示
                img:setVisible(true)
                isShow = true
            else
                print("来到了 显示")
                img:setVisible(false)
                isShow = false
            end

        end
    end)

    local ang = 0;

    --使图片 旋转, 缩放 并改变 不透明度
    local btn_right = rootP:getChildByName("Button_right")
    btn_right:addClickEventListener(function(sender)
        print("坦克 --<< 右边按钮被点击")
        ang = ang + 30

        --旋转
        img:setRotation(ang)

        --缩放
        img:setScale(ang / 360)

        --透明度
        local opa = 30
        local realOpa = ang / 360 * 255

        if (realOpa <= 30) then
            realOpa = opa
        end

        img:setOpacity (realOpa)

        if(ang >= 360) then
            ang = 0
        end

    end)

    --push到别的场景
    local addLayerBtn = rootP:getChildByName("Button_NextScene")
    addLayerBtn:addClickEventListener(function(sender)
        print("添加层")

        --1. 需要跳转的场景
        local testScene = TestScene.create()

        --2. 过度动画
        local ps = cc.TransitionJumpZoom:create(1.0, testScene)

        --3. 让 Director 进行场景跳转
        director:pushScene(ps)

    end)

    --弹出对话框, 底部有遮罩
    local maskLayBtn = rootP:getChildByName("Button_MaskLayer")
    maskLayBtn:addClickEventListener(function(sender)
        print("弹出遮罩")

        --获取 登录Layer
        local maskLayer = cc.CSLoader:createNode("LoadingMaskLayer.csb")
        self:addChild(maskLayer)

        local maskRootP = maskLayer:getChildByName("Panel_bg")

        --账号
        local countT = maskRootP:getChildByName("TextField_count")

        --密码
        local pwdT = maskRootP:getChildByName("TextField_pwd")

        --登录按钮
        local loadBtn = maskRootP:getChildByName("Button_login")
        loadBtn:addClickEventListener(function(sender)

            --获取输入框中的文本
            --print(countT:getStringValue())

            if (countT:getStringValue() == "" or pwdT:getStringValue() == "") then

                print("账号或密码为空提示")

                --弹出提示框: 账号或密码错误
                local warmLayer = cc.CSLoader:createNode("WarmingLayer.csb")
                self:addChild(warmLayer)

                local rootP = warmLayer:getChildByName("Panel_WarmBg")

                -- 提示框的内容
                local warmTitle = rootP:getChildByName("Text_WarmTitle")
                local warmContent = rootP:getChildByName("Text_WarmContent")

                --设置提示框的标题
                warmTitle:setText("警  告")
                warmContent:setText("警告: 你似乎没有输入账\n号或者密码, 所以是无法\n登陆的 哈哈哈!")

                -- 提示框 确定按钮
                local sureBtn = rootP:getChildByName("Button_WarmSureBtn")
                sureBtn:addClickEventListener(function(sender)
                    self:removeChild(warmLayer, true)
                end)

            else
                print("移除登录画面")
                self:removeChild(maskLayer, true)

            end

        end)
        
    end)

end


return MainScene
上一篇下一篇

猜你喜欢

热点阅读