一个较完整的LUA COCOS2DX 操作“类”

来源:互联网 发布:星宇记账软件 编辑:程序博客网 时间:2024/05/21 06:31
包含
1 音效 2 “类” 3 粒子效果 4 读取COCOSTUDIO的UI文件 5 类方法 6 内方法 7 全局变量和局部变量 。 LUA“类"的使用方法请参考上篇文章。

特别说明  local moveTo = cc.MoveTo:create(2.0,cc.vertex2F(900,500)) ,在3.1.1时的LUA API没有VEC2和POINT的概念,而是改成了cc.vertex2F(float,float)。

这里顺便提一下为什么不用cocos2dx-quick的LUA框架。

首先笔者没有真正研究过QUICK,只是看过一些功能介绍,但基于一些QUCIK技术朋友的反馈,QUICK更适用于做单机小游戏,笔者的项目是ARPG大型网游。

另外COCOS2DX已经有较成熟的CODE IDE,可以帮助我们快速开发LUA项目,不依赖LUA框架对提高LUA写作也有一定帮助,当然,也能降低一些框架的资源开销。


require "Cocos2d"require "Cocos2dConstants"require "GuiConstants"local LoginScene = class("LoginScene",function()    return cc.Scene:create()end)local visibleSize = cc.Director:getInstance():getVisibleSize()local origin = cc.Director:getInstance():getVisibleOrigin()local layerFarm = cc.Layer:create()function LoginScene.create()    local scene = LoginScene.new()    scene:addChild(scene:createLayerFarm())    local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("res/music/xinshoucun.mp3")    cc.SimpleAudioEngine:getInstance():playMusic(bgMusicPath, true)    return sceneendfunction LoginScene:changeLayer(layerOne,layerTwo)    cclog("change func")    local moveTo = cc.MoveTo:create(2.0,cc.vertex2F(900,500))    layerOne:runAction(moveTo)end-- create farmfunction LoginScene:createLayerFarm()    local uiLayout = ccs.GUIReader:shareReader():widgetFromJsonFile("res/Scene_login_register_1/Scene_login_register_1.json")    local loginPanel = uiLayout:getChildByName("Panel_login")    local registerPanel = uiLayout:getChildByName("Panel_register")    local loginButton = loginPanel:getChildByName("btn_login")    local btn_register = loginPanel:getChildByName("btn_register")    local bt_back_login = registerPanel:getChildByName("bt_back_login")    --loginbutton func       local function touchEvent(sender,eventType)        cclog("in the touchevent")        if eventType == ccui.TouchEventType.ended then            if sender:getTag() == 37 then --loginPanel register bt                loginPanel:setVisible(false)                registerPanel:setVisible(true)                LoginScene:changeLayer(registerPanel,loginPanel)            elseif sender:getTag() == 36 then --loginPanel login bt                cclog("I wanner login")            elseif sender:getTag() == 58 then -- registerPanel back login bt                loginPanel:setVisible(true)                registerPanel:setVisible(false)            end        end    end    loginButton:addTouchEventListener(touchEvent)       btn_register:addTouchEventListener(touchEvent)     bt_back_login:addTouchEventListener(touchEvent)    layerFarm:addChild(uiLayout)    LoginScene.createFire()    return layerFarmendfunction LoginScene:createFire()    local fire = cc.Director:getInstance():getTextureCache():addImage("particlefire.png")    local fireParticle = cc.ParticleFire:create()    fireParticle:setScale(0.85)    fireParticle:setTexture(fire)    layerFarm:addChild(fireParticle)    fireParticle:setPosition(origin.x + 50, origin.y + 0)    local fireParticle2 = cc.ParticleFire:create()    fireParticle2:setScale(0.30)    fireParticle2:setTexture(fire)    layerFarm:addChild(fireParticle2)    fireParticle2:setPosition(origin.x + 730, origin.y - 10)endreturn LoginScene


原创自博主的同名技术博客  http://5.quanpao.com/?p=973

转载请注明出处

0 0
原创粉丝点击