cocos2dx lua基础篇

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 事先说明, 我并不看好 Cocos2dx 即使它跨平台, 我一向觉得 有Unity就够了. 但是无奈需要做一个 旧...
    tackor阅读 1,779评论 0 1
  • 关键词: cocos2d-lua项目启动流程 lua调用cocos2d引擎API 开发环境: 引擎版本:Cocos...
    qufl阅读 12,636评论 3 54
  • Cocos2d-lua 是 Cocos2d-x引擎添加了Lua绑定的版本。使用C++和Cocos2d-x引擎开发时...
    JunChow520阅读 12,370评论 0 6
  • 最近闲着,捣鼓一下Lua调用自定义C++类。重点参考了下面几篇文章,记录一下流程。 http://shahdza....
    fan1990阅读 2,362评论 1 3
  • 最近开始使用cocos2dx进行游戏开发,过程中发现有些东西需要使用c++进行实现,暴露给lua层使用,所以研究了...
    JanRoid阅读 1,229评论 0 0