美文网首页
cocos2dx lua基础篇

cocos2dx lua基础篇

作者: 余生only | 来源:发表于2020-12-24 20:05 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:cocos2dx lua基础篇

          本文链接:https://www.haomeiwen.com/subject/vccvnktx.html