Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02「建议收藏」

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






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116425.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 验证码的原理、作用及实现「建议收藏」

    验证码的原理、作用及实现「建议收藏」验证码能有效阻止恶意登录与注册,这里主要是验证码的相关原理及操作实现。所用知识为javaweb的jspservletxml及java基础知识。

    2022年7月14日
  • 网络舆情分析与研判的指标还应有哪些_舆情监测是什么

    网络舆情分析与研判的指标还应有哪些_舆情监测是什么网络聚集的人气、展开的场景与揭示的真相,不仅会推动新闻事件的发展、形成网络舆论,甚至还会直接影响社会主流舆论、推动社会变革。对舆情监测主体来说,如何加强对网络舆情的实时全面监测,并对其做出及时反馈、防患于未然;如何利用现代信息技术做好网络舆情分析,从而进行有效引导和控制;如何化解网络舆情危机,实现网络舆情的高效管理是一项任重而道远的任务。在网络舆情分析和管理中,舆情监测主体的业务需求是基础和根本,业务需求的满足与否,是评判网络舆情分析系统的核心指标。网络舆情分析系统的评判指标参考项,如下:网络舆情分析

    2022年9月16日
  • 邮件服务器的架设方法「建议收藏」

    用Win2003架设邮件服务器很多企业局域网内都架设了邮件服务器,用于进行公文发送和工作交流。但使用专业的企业邮件系统软件需要大量的资金投入,这对于很多企业来说是无法承受的。其实我们可以通过WindowsServer2003提供的POP3服务和SMTP服务架设小型邮件服务器来满足我们的需要。一、安装POP3和SMTP服务组件WindowsServer2003…

    2022年4月8日
  • 关于getchar的用法及实例解析

    关于getchar的用法及实例解析getchar——读取字符的函数intgetchar(void)返回类型为int,参数为void.有人可能会有疑惑,getchar既然是读取字符的,为什么返回类型是int呢?1、getchar其实返回的是字符的ASCII码值(整数)。2、getchar在读取结束或者失败的时候,会返回EOF。EOF意思是endoffile,本质上是-1.下面我们一起来看看下面这段代码什么意思#include<stdio.h>intmain(){ intch=0; wh

    2022年10月19日
  • vim命令搜索_linux打开vim编辑器

    vim命令搜索_linux打开vim编辑器尽管目前我们已经涉及Vim的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足。承接我们的Vim教程系列,本文我们将讨论Vim提供的多种搜索技术。不过在此之前,请注意文中涉及到的所有的例子、命令、指令均是在Ubuntu14.04,Vim7.4下测试的。Vim中的基础搜索操作当你在Vim中打开一个文件并且想要搜索一个特定的单词或模板,第一步你必须要先按…

    2022年9月24日
  • PHP中如何使用Redis接管文件存储Session详解

    PHP中如何使用Redis接管文件存储Session详解

    2021年11月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号