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) 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实现场景跳转了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |