Menu 返回主菜单按钮在Corona SDK中不起作用

Menu 返回主菜单按钮在Corona SDK中不起作用,menu,return,coronasdk,Menu,Return,Coronasdk,我不能让重新启动或主菜单按钮工作后,你赢或失败的游戏。谁能给我指一下正确的方向吗。我不想使用故事板,除非这是唯一的方法。。。。(赢家失败的代码在最下面) -->[使用的颜色] --389bff(蓝色) --ff3938(红色) --隐藏状态栏 display.setStatusBar(display.HiddenStatusBar) --物理学 本地物理=要求(“物理”) 物理开始 物理学.重力(0,0) --physics.setDrawMode(“混合型”) --图形 --[背景] 本地bg

我不能让重新启动或主菜单按钮工作后,你赢或失败的游戏。谁能给我指一下正确的方向吗。我不想使用故事板,除非这是唯一的方法。。。。(赢家失败的代码在最下面)

-->[使用的颜色]
--389bff(蓝色)
--ff3938(红色)
--隐藏状态栏
display.setStatusBar(display.HiddenStatusBar)
--物理学
本地物理=要求(“物理”)
物理开始
物理学.重力(0,0)
--physics.setDrawMode(“混合型”)
--图形
--[背景]
本地bg=display.newImage('bg.png')
--[标题视图]
本地标题
本地播放
本地信贷
本地标题视图
--[学分]
本地信贷视图
--游戏背景
本地gameBg
--圈组
地方圈子
--墙
局部左派
本地权利
本地顶级
局部底部
--分数文本字段
本地分数
--变数
局部整形
本地lastX
--功能
本地主={}
本地startButtonListeners={}
本地showCredits={}
本地hideCredits={}
本地showGameView={}
本地游戏监听器={}
局部onTouch={}
局部碰撞={}
本地警报={}
--主要功能
函数Main()
titleBg=display.newImage('title.png',0100)
playBtn=display.newImage('playBtn.png',200240)
creditsBtn=display.newImage('creditsBtn.png',200290)
titleView=display.newGroup(titleBg、playBtn、creditsBtn)
startButtonListeners('add')
结束
函数startButtonListeners(操作)
如果(操作=='add'),则
playBtn:addEventListener('tap',showGameView)
creditsBtn:addEventListener('tap',showCredits)
其他的
playBtn:removeEventListener('tap',showGameView)
creditsBtn:removeEventListener('tap',showCredits)
结束
结束
功能显示积分:点击(e)
playBtn.isVisible=false
creditsBtn.isVisible=false
creditsView=display.newImage('credits.png',0,display.contentHeight)
lastY=标题g.y
lastX=标题G.x
转换到(titleBg,{time=300,y=(display.contentHeight*0.5)-(titleBg.height-15),x=(display.contentWidth*0.5)-(titleBg.width*0.5)+55})
transition.to(creditsView,{time=300,y=(display.contentHeight*0.5)+35,onComplete=function()creditsView:addEventListener('tap',hideCredits)end})
结束
函数hideCredits:点击(e)
transition.to(creditsView,{time=300,y=display.contentHeight+25,onComplete=function()creditsBtn.isVisible=true playBtn.isVisible=true creditsView:removeEventListener('tap',hideCredits)display.remove(creditsView)creditsView=nil end})
转换到(titleBg,{time=300,y=lastY,x=lastX});
结束
功能显示游戏视图:点击(e)
transition.to(titleView,{time=300,x=-titleView.height,onComplete=function()开始按钮侦听器('rmv')显示。remove(titleView)titleView=nil end})
--[添加GFX]
--游戏背景
显示。删除(bg)
gameBg=display.newImage('gameBg.png'))
--墙
左=显示。换行符(0,240,0,720)
右=显示。换行符(320240320720)
顶部=显示。换行符(160,0480,0)
底部=显示。换行符(160480480480)
--圈
圆圈=display.newGroup()
本地颜色=0
对于i=1,5 do
本地rx=21+数学地板(数学随机()*(display.contentWidth-42))--分别为21和42
local ry=21+math.floor(math.random()*(display.contentHeight-42))--分别为21和42
本地cg=display.newCircle(rx,ry,21)——为21
本地标签=display.newText('20',cg.x-6.5,cg.y-6.2,native.systemFontBold,13)--文本为0
cg.fillColor=颜色+(i*40)
cg:setFillColor(cg.fillColor)
本地c=显示。新组(cg,标签)
c、 按下=错误
c、 name='c'
c、 半径=21
--循环物理
addBody(c,‘dynamic’,{radius=21,bounce=1})——是21
c:setLinearVelocity(50,50)--是100100=开始时的球速
圆圈:插入(c)
结束
--墙物理
physics.addBody(左,“静态”)
physics.addBody(右,“静态”)
physics.addBody(顶部为“静态”)
physics.addBody(底部为“静态”)
--分数文本字段
分数=display.newText('100',257,4,native.systemFont,15)--分数是0而不是100
分数:setTextColor(255、252、252)
本地总计=display.newText('/100',267,4,native.systemFont,15)
总计:setTextColor(255、252、252)
gameListeners('add')
结束
函数gameListeners(操作)
如果(操作=='add'),则
对于i=1,5 do
圆圈[i]:addEventListener('touch',onTouch)
圆[i]:addEventListener('碰撞',迎面碰撞)
结束
其他的
对于i=1,5 do
圆圈[i]:移除EventListener('touch',onTouch)
圆圈[i]:removeEventListener('碰撞',迎面碰撞)
结束
结束
结束
函数onTouch(e)
如果(e.phase==“开始”),则
e、 target.pressed=true
--减少计数器
score.text=tostring(tonumber(score.text)-1)
--缩小尺寸
e、 target.radius=e.target.radius-1
--变色
e、 目标[1]:setFillColor(255,57,56)
结束
如果(e.phase=='end'),则
e、 target.pressed=false
--更新物理学
本地编号=tostring(tonumber(e.target[2].text)-1)
局部r=e.目标半径
本地cg=display.newCircle(e.target.x,e.target.y,r)
本地标签=display.newText(数字,cg.x-4.2,cg.y-6.2,native.systemFontBold,13)--为12.2
cg:setFillColor(e.target[1].fillColor)
cg.fillColor=e.target[1]。fillColor
本地c=显示。新组(cg,标签)
c、 按下=错误
c、 name='c'
c、 半径=r
圆圈:删除(如目标)
addBody(c,'dynamic',{radius=r,bounce=1})
c:setLinearVelocity(50,50)--这会改变触摸时的速度为100100
c:addEventListener('touch',onTouch)
c:addEventListener(“碰撞”,迎面碰撞)
--[Colors Used]
--389bff (Blue)
--ff3938 (Red)

-- Hide Status Bar

display.setStatusBar(display.HiddenStatusBar)

-- Physics

local physics = require('physics')
physics.start()
physics.setGravity(0,0)
--physics.setDrawMode('hybrid')

-- Graphics

-- [Background]

local bg = display.newImage('bg.png')

-- [Title View]

local titleBg
local playBtn
local creditsBtn
local titleView

-- [Credits]

local creditsView

-- Game Background

local gameBg

-- Circles Group

local circles

-- Walls 

local left
local right
local top
local bottom

-- Score TextField

local score

-- Variables

local lastY
local lastX

-- Functions

local Main = {}
local startButtonListeners = {}
local showCredits = {}
local hideCredits = {}
local showGameView = {}
local gameListeners = {}
local onTouch = {}
local onCollision = {}
local alert = {}


-- Main Function

function Main()
    titleBg = display.newImage('title.png', 0, 100)
    playBtn = display.newImage('playBtn.png', 200, 240)
    creditsBtn = display.newImage('creditsBtn.png', 200, 290)
    titleView = display.newGroup(titleBg, playBtn, creditsBtn)

    startButtonListeners('add')
end

function startButtonListeners(action)
    if(action == 'add') then
        playBtn:addEventListener('tap', showGameView)
        creditsBtn:addEventListener('tap', showCredits)
    else
        playBtn:removeEventListener('tap', showGameView)
        creditsBtn:removeEventListener('tap', showCredits)
    end
end

function showCredits:tap(e)
    playBtn.isVisible = false
    creditsBtn.isVisible = false
    creditsView = display.newImage('credits.png', 0, display.contentHeight)

    lastY = titleBg.y
    lastX = titleBg.x
    transition.to(titleBg, {time = 300, y = (display.contentHeight * 0.5) - (titleBg.height - 15), x = (display.contentWidth * 0.5) - (titleBg.width * 0.5) + 55 })
    transition.to(creditsView, {time = 300, y = (display.contentHeight * 0.5) + 35, onComplete = function() creditsView:addEventListener('tap', hideCredits) end})
end

function hideCredits:tap(e)
    transition.to(creditsView, {time = 300, y = display.contentHeight + 25, onComplete = function() creditsBtn.isVisible = true playBtn.isVisible = true creditsView:removeEventListener('tap', hideCredits) display.remove(creditsView) creditsView = nil end})
    transition.to(titleBg, {time = 300, y = lastY, x = lastX});
end

function showGameView:tap(e)
    transition.to(titleView, {time = 300, x = -titleView.height, onComplete = function() startButtonListeners('rmv') display.remove(titleView) titleView = nil end})

    -- [Add GFX]

    -- Game Background

    display.remove(bg)
    gameBg = display.newImage('gameBg.png')

    -- Walls

    left = display.newLine(0, 240, 0, 720)
    right = display.newLine(320, 240, 320, 720)
    top = display.newLine(160, 0, 480, 0)
    bottom = display.newLine(160, 480, 480, 480)

    -- Circles

    circles = display.newGroup()
    local color = 0

    for i = 1, 5 do
        local rx = 21 + math.floor(math.random() * (display.contentWidth - 42)) --was 21 and 42
        local ry = 21 + math.floor(math.random() * (display.contentHeight - 42))--was 21 and 42

        local cg = display.newCircle(rx, ry, 21)--was 21
        local label = display.newText('20',cg.x-6.5, cg.y-6.2, native.systemFontBold, 13) --text was 0
        cg.fillColor = color + (i*40)
        cg:setFillColor(cg.fillColor)
        local c = display.newGroup(cg, label)
        c.pressed = false
        c.name = 'c'
        c.radius = 21

        -- Circle Physics

        physics.addBody(c, 'dynamic', {radius = 21, bounce = 1})--was 21
        c:setLinearVelocity(50, 50)--was 100,100 = speed of balls on start

        circles:insert(c)
    end

    -- Walls Physics

    physics.addBody(left, 'static')
    physics.addBody(right, 'static')
    physics.addBody(top, 'static')
    physics.addBody(bottom, 'static')

    -- Score TextField

    score = display.newText('100', 257, 4, native.systemFont, 15) -- score was 0 not 100
    score:setTextColor(255, 252, 252)
    local total = display.newText('   / 100', 267, 4, native.systemFont, 15)
    total:setTextColor(255, 252, 252)

    gameListeners('add')
end

function gameListeners(action)
    if(action == 'add') then
        for i = 1, 5 do
            circles[i]:addEventListener('touch', onTouch)
            circles[i]:addEventListener('collision', onCollision)
        end
    else
        for i = 1, 5 do
            circles[i]:removeEventListener('touch', onTouch)
            circles[i]:removeEventListener('collision', onCollision)
        end
    end
end

function onTouch(e)
    if(e.phase == 'began') then
        e.target.pressed = true

        -- Decrease Counter

        score.text = tostring(tonumber(score.text) - 1)

        -- Decrease size

        e.target.radius = e.target.radius - 1

        -- Change Color

        e.target[1]:setFillColor(255,57,56)
    end

    if(e.phase == 'ended') then
        e.target.pressed = false
        -- Update physics

        local number = tostring(tonumber(e.target[2].text)-1)
        local r = e.target.radius
        local cg = display.newCircle(e.target.x, e.target.y, r)
        local label = display.newText(number ,cg.x-4.2, cg.y-6.2, native.systemFontBold, 13) -- was12.2
        cg:setFillColor(e.target[1].fillColor)
        cg.fillColor = e.target[1].fillColor
        local c = display.newGroup(cg, label)
        c.pressed = false
        c.name = 'c'
        c.radius = r
        circles:remove(e.target)
        physics.addBody(c, 'dynamic', {radius = r, bounce = 1})
        c:setLinearVelocity(50, 50)--this changes the speed once touched was100,100
        c:addEventListener('touch', onTouch)
        c:addEventListener('collision', onCollision)
        circles:insert(c)

        -- Move Textfield when number is 2 digit
        if(tonumber(number) > 9) then
            label.x = label.x - 3
        end

        -- Check if score has reached 0

        if(tonumber(score.text) <=0) then
            local bg = display.newImage('gameBg.png')
            transition.from(bg, {time = 500, alpha = 0, onComplete = alert('win')})
        end
    end
end

function onCollision(e)
    if(e.target.pressed and e.other.name == 'c') then
        -- Wait 0.1 seconds to stop physics
        timer.performWithDelay(100, function() physics.stop() end, 1)

        local r = e.target.radius
        local c = display.newCircle(e.target.x, e.target.y, r)
        c:setFillColor(255,57,56)

        gameListeners('rmv')
        transition.to(c, {time = 700, xScale = 500, yScale =  500, onComplete = alert('lost')}) --change from 25 to 50
    end
end

function alert(action)
    if(action == 'win') then
        local alertView = display.newImage('won.png', 0, 105)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
        local alertView = display.newImage('replayWinBtn.png', 200, 240)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
        local alertView = display.newImage('replayWinMenuBtn.png', 200, 290)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
    else
        local alertView = display.newImage('lost.png', 0, 105)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
        local alertView = display.newImage('replayLostBtn.png', 200, 240)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
        local alertView = display.newImage('replayLostMenuBtn.png', 200, 290)
        transition.from(alertView, {time = 300, y = -82, delay = 500})
    end
end

Main()
transition.from(bg, {time = 500, alpha = 0, onComplete = alert('win')})
transition.from(bg, {time = 500, alpha = 0, onComplete = function()
    alert('win')
end})