cocos2dx 3.12 lua切换场景_03

时间:2022-12-26 00:23:01

创建工程略过。。。

1.将要切换场景的lua文件,里面含有2个方法,一个全局的一个局部的,全局的是在切换场景的时候用(为什么定义全局的,后面会有说明),场景只简单的展示了一张图片

[plain] view plain copy cocos2dx 3.12 lua切换场景_03cocos2dx 3.12 lua切换场景_03
  1. local s = cc.Director:getInstance():getWinSize()  
  2.   
  3. local GameMainLayer = nil  
  4.   
  5. GameMainLayer = function ()  
  6.     local ret = cc.Layer:create()  
  7.   
  8.     local pBg = cc.Sprite:create("fruit/MM_0002.png")  
  9.     -- self.Bg:setAnchorPoint(cc.p(0.5, 0.5))  
  10.     pBg:setPosition(cc.p(s.width/2, s.height/2))  
  11.     ret:addChild(pBg, 1)  
  12.   
  13.     return ret  
  14. end  
  15.   
  16.   
  17. function cc.exports.CreateGameScene()  
  18.     print("CreateGameScene...")  
  19.   
  20.     local scene = cc.Scene:create()  
  21.     local layer = GameMainLayer()  
  22.     scene:addChild(layer)  
  23.     return scene  
  24. end  


2.切换前的场景,定义一个背景图,一个按钮,通过按钮事件来实现切换场景

因为要用到GameScene.lua文件,所以这里要引用一下;

重点是在按钮回调的方法changeSceneCallBack() 里面的CreatGameScene这个方法,由于在CreatGameScene在GameScene.lua里是一个全局的,所以这里就能很方便的调用,这也就是为什么在GameScene.lua将它定义为全局的原因

[plain] view plain copy cocos2dx 3.12 lua切换场景_03cocos2dx 3.12 lua切换场景_03
  1. require "app/views/GameScene"  
  2. local MainScene = class("MainScene", cc.load("mvc").ViewBase)  
  3. local s = cc.Director:getInstance():getWinSize()  
  4. print(s.width, s.height)  
  5. function MainScene:onCreate()  
  6.     -- add background image  
  7.     -- display.newSprite("HelloWorld.png")  
  8.     --     :move(display.center)  
  9.     --     :addTo(self)  
  10.   
  11.     -- -- add HelloWorld label  
  12.     -- cc.Label:createWithSystemFont("Hello World", "Arial", 40)  
  13.     --     :move(display.cx, display.cy + 200)  
  14.     --     :addTo(self)  
  15.   
  16.      self.Bg = cc.Sprite:create("fruit/logo.png")  
  17.      self.Bg:setPosition(cc.p(s.width/2, s.height/2))  
  18.      self:addChild(self.Bg, 1)  
  19.   
  20.      local function changeSceneCallBack()  
  21.         print("changeSceneCallBack...")  
  22.         local _gameScene = CreateGameScene()  
  23.         if _gameScene then  
  24.             print("1111111")  
  25.             cc.Director:getInstance():replaceScene(_gameScene)  
  26.         else  
  27.             print("_gameScene  nil...")  
  28.         end  
  29.   
  30.      end   
  31.   
  32.      local changeItem = cc.MenuItemImage:create("CloseNormal.png", "CloseSelected.png")  
  33.      changeItem:setScale(3.0)  
  34.      changeItem:registerScriptTapHandler(changeSceneCallBack)  
  35.      changeItem:setPosition(cc.p(s.width/2, 200))  
  36.   
  37.      local changeMenu = cc.Menu:create(changeItem)  
  38.      changeMenu:setPosition(cc.p(0, 0))  
  39.      self:addChild(changeMenu, 1)  
  40. end