cocos2d-x用Lua实现场景跳转

前端之家收集整理的这篇文章主要介绍了cocos2d-x用Lua实现场景跳转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先,我们打开在cocos code IDE 里面新建的项目 在Src下我们新建3个场景分别为 GameScene MenuScene HelpScne。

我们先在MenuScene里面先把我们定义的菜单界面搞出来

require "Cocos2d"

--创建菜单界面

local MenuScene=class("MenuScen",function()

return cc.Scene:create()

end)

--添加一个Create函数

function MenuScene:create()

local scene=MenuScene.new()

scene:addChild(scene:init())

return scene

end

--添加一个构造函数

function MenuScene:ctor() --记住这里必须写ctor()

self.winsize=cc.Director:getInstance():getWinSize()

end

--添加一个初始化函数

function MenuScene:init()

local layer=cc.layer:create()

local label=cc.labelTTF:create("菜单界面","宋体",23)

label:setScale(2)

label:setPosition(self.winsize.width/2,self.winsize.height-100)

layer:addChild(label)

--添加选择菜单

local label1=cc.labelTTF:create("开始游戏",“宋体”,23)

local itemStart=cc.MenuItemLabelL:create(label1)

local label2=cc.labelTTF:create("游戏帮助",“宋体”,23)

local itemHelp=cc.MenuItemLabelL:create(label2)

local menu=cc.Menu:create()

menu:addChild(itemStart)

menu:addChile(itemHelp)

itemHelp:setPositionY(itemHelp:getPositionY()-50)

layer:addChild(menu)

--添加触摸

local function menuCallBack(obj)

print("按下"..obj)

if tonumber (obj)==10 then

--场景跳转

local scene=require("GameScene")

local gs=scene:create()

cc.Director:getInstance():replaceScene(gs)

elseif tonumber(obj)==12 then

local scene=require("HelpScene")

end

itemStart:setTag(10)
itemHelp:setTag(12)

itemStart:registerSceiptTapHandler(menuCallBack)

itemStart:registerSceiptTapHandler(menuCallBack)

return layer

end

return MenuScene

这样我们就把菜单界面写出来了

然后我们把GameScene界面写一下

require "Cocos2d"

--定义游戏场景

local GameScene=class("GameScene",function()

return cc.Scene:create()

end)

--create函数

function GameScene:create()

local scene=GameScene.new()

scene:addChild(scene:init())

return scene

end

--构造函数

function GameScene:ctor()

self.winsize=cc.Director:getInstance():getWinSize()

end

--初始化函数

function GameScene:init()

local layer=cc.Layer:create()

local label=cc.LabelTTF:create("游戏界面","",30)

label:setPosition(self.winsize.width/2,self.winsize.height-100)

layer:addChild(label)

local function touchBegan(touch,event)

local scene=require("MenuScene")

local ms=scene:create()

local tms=cc.TransitionFlipX:create(0.5,ms)

cc.Director:getInstance():replaceScene(tms)

end

--添加触摸键听

local listener=cc.EventListenerTouchOneByOne:create()

listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)

cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraPHPriority(listener,layer)

return layer

end

return GameScene

然后我们再把HelpScene写一下

--定义游戏帮助场景

local HelpScene=class("HelpScene",function()

return cc.Scene:create()

--create函数

function HelpScene:create()

local scene=HelpScene.new()

scene:addChild(scene:init())

return scene

function HelpScene:ctor()

self.winsize=cc.Director:getInstance():getWinSize()

function HelpScene:init()

local layer=cc.Layer:create()

local label=cc.LabelTTF:create("帮助界面",self.winsize.height-100)

layer:addChild(label)

local function touchBegan(touch,event)

local scene=require("MenuScene")

local ms=scene:create()

local tms=cc.TransitionFlipX:create(0.5,ms)

cc.Director:getInstance():replaceScene(tms)

end

--添加触摸键听

local listener=cc.EventListenerTouchOneByOne:create()

listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)

cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraPHPriority(listener,layer)

return layer

end

return HelpScene

然后我们运行一下,这样就实现了用Lua实现场景跳转

原文链接:https://www.f2er.com/cocos2dx/345549.html

猜你在找的Cocos2d-x相关文章