Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02

/*

场景一lua代码

*/

require "MainScene02"

local dic_size = CCDirector:sharedDirector():getWinSize()

local win_w = dic_size.width

local win_h = dic_size.height

local cclog = function(...)

print(string.format(...))

end

function MainScene_01()

local self = CCLayer:create()

-- click btn

local function clickMenu_scene()

--切换场景<特效>

local fadeClipX = CCTransitionFlipX:create(1,_main02())

CCDirector:sharedDirector():replaceScene(fadeClipX)

end

--初始化相关场景元素

local function init()

cclog("....this is init thing......")

-- put a bg pic

local pSrite = CCSprite:create("bg_store.png")

pSrite:setPosition(ccp(win_w/2, win_h/2))

pSrite:setScaleX(win_w/pSrite:getContentSize().width)

self:addChild(pSrite)

-- create a Button Menu

local btn = CCMenuItemImage:create("btn_store_normal.png", "btn_store_selected.png")

btn:setPosition(ccp(win_w/2, win_h/2))

btn:registerScriptTapHandler(clickMenu_scene)--加入button点击触发事件

local btn_menu = CCMenu:createWithItem(btn)

btn_menu:setPosition(ccp(0,0))

self:addChild(btn_menu)

end

init()--get init method

return self

end

function _main01()

local scene = CCScene:create()

scene:addChild(MainScene_01())

local dic = CCDirector:sharedDirector()

dic:setDisplayStats(false)

-- CCEGLView:sharedOpenGLView():setDesignResolutionSize(960,480, kResolutionShowAll)

-- CCEGLView:sharedOpenGLView():setDesignResolutionSize(480, 800, kResolutionShowAll)

dic:runWithScene(scene)

end

_main01()--调用方法

/*

场景二lua代码

*/

local dic_size = CCDirector:sharedDirector():getWinSize()

local win_w = dic_size.width

local win_h = dic_size.height

--初始化第二个场景的层元素

local function MainScene_02()

local layer = CCLayer:create()

local cclog = function (...)

print(string.format(...))

end

--点击button触发的方法

local function clickMainScene02_pop()

cclog("this is clicked ".."btn 02")

local fins = layer:getChildByTag(100)

fins:setVisible(true)

end

cclog("这是在切换新的场景。。

。。。。

。")

--创建层

--local layer = CCLayer:create()

--初始化场景的各个元素

local function inits()

--初始化第二个场景的背景

local bgSprite = CCSprite:create("bg_mainmenu.png")

bgSprite:setPosition(ccp(win_w/2, win_h/2))

bgSprite:setScaleX(win_w/bgSprite:getContentSize().width)

layer:addChild(bgSprite)

--加入button

local popMenu = CCMenuItemImage:create("menu1.png","menu1.png")

popMenu:registerScriptTapHandler(clickMainScene02_pop)

popMenu:setScale(2)

popMenu:setPosition(ccp(win_w/2, win_h/2))

local okMenu = CCMenu:createWithItem(popMenu)

okMenu:setPosition(ccp(0,0))

layer:addChild(okMenu)

local showSp = CCSprite:create("menu2.png")

showSp:setTag(100)

showSp:setAnchorPoint(ccp(0,0))

showSp:setPosition(ccp(win_w/2, win_h/2))

showSp:setVisible(false)

layer:addChild(showSp)

end

inits()

--[[

处理触碰事件

onTouchBegan

onTouchMoved

onTouchEnded

]]

local function onTouchBegan()

cclog("xiaoshiba -------------")

layer:getChildByTag(100):setVisible(false)

return true

end

local function onTouchMoved()

cclog("onTouchMoved")

end

local function onTouchEnded()

cclog("onTouchEnded")

--随意触碰时 将菜单隐藏

layer:getChildByTag(100):setVisible(false)

end

local function onTouch(eventTye,x,y)

if eventType == "began" then

return onTouchBegan(x,y)

elseif eventType == "moved" then

return onTouchMoved(x,y)

else

return onTouchEnded(x,y)

end

end

--注冊触碰事件

layer:setTouchEnabled(true)

layer:registerScriptTouchHandler(onTouch)

return layer

end

function _main02()

local sc02 = CCScene:create()

sc02:addChild(MainScene_02())

return sc02

end