首页 > 代码库 > 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")
local gs=scene:create()
cc.Director:getInstance():replaceScene(gs)
end
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写一下
require "Cocos2d"
--定义游戏帮助场景
local HelpScene=class("HelpScene",function()
return cc.Scene:create()
end)
--create函数
function HelpScene:create()
local scene=HelpScene.new()
scene:addChild(scene:init())
return scene
end
--构造函数
function HelpScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
end
--初始化函数
function HelpScene: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 HelpScene
然后我们运行一下,这样就实现了用Lua实现场景跳转了
cocos2d-x用Lua实现场景跳转