0
这款游戏就像杀死蚊子一样。这是1级文件。当玩家点击蜜蜂时,会显示游戏结束。当时间到了,游戏结束会显示。杀死的蚊子总数将显示在最后。我对电晕和游戏开发非常陌生。 我的问题是:如何添加一个按钮返回主菜单(另一个.lua文件)?
- 在哪里可以通过“触摸”功能返回主菜单?它的代码是什么?
- 我正在使用作曲家。所以我尝试了composer.gotoScene(“菜单”),但似乎并不奏效。错误。
在此先感谢您提供的任何帮助。下面是部分代码:
local composer = require("composer")
local scene = composer.newScene()
local physics = require("physics")
local widget = require "widget"
physics.start()
rand = math.random(20)
local slap_sound = audio.loadSound("Sound/slap2.mp3")
local ow = audio.loadSound("Sound/ow.mp3")
local buttonSound = audio.loadSound("Sound/sound2.mp3")
local back
--local mossie_sound = audio.loadSound("Sound/mossie.mp3")
local count={total1=0,total=0,touch=0,life=3}
local background = display.newImageRect("Images/bg.jpg", display.contentWidth, display.contentHeight)
background.anchorX = 0
background.anchorY = 0
background.x, background.y = 0, 0
local total=display.newText("Score : 0",display.contentWidth * 0.5, 20, "Arial", 26)
total:setTextColor(000000)
local time_remain = 30
local mossie
local bee
local shade
local gameOverScreen
local winScreen
local gameIsActive = false
local countdown=display.newText(time_remain ,display.contentWidth * 0.9, 20, "Arial", 26)
countdown:setTextColor(000000)
local life = display.newText("Life : 3 " ,display.contentWidth * 0.5, 50, "Arial", 26)
life:setTextColor(000000)
local pauseBtn = display.newImage("Images/pause.png")
pauseBtn.x = display.contentWidth * 0.1
pauseBtn.y = display.contentHeight - 450
local resumeBtn = display.newImage("Images/playb.png")
resumeBtn.x = display.contentWidth * 0.1
resumeBtn.y = display.contentHeight - 450
local gameOver = function()
composer.removeScene("level1") //scene cannot be removed???
gameIsActive = false
physics.pause()
gameOverScreen = display.newImage("Images/gameover.png",400,300)
gameOverScreen.x = 160
gameOverScreen.y = 240
gameOverScreen.alpha = 0
transition.to(gameOverScreen,{time=500,alpha=1})
total.isVisible = true
total.text="Score : "..count.touch
total.x = 160
total.y = 400
botwall.isVisible = false
mossie.isVisible = false
bee.isVisible = false
life.isVisible = false
countdown.isVisible = false
pauseBtn.isVisible = false
resumeBtn.isVisible = false
end
local collisionListener=function(self,event)
if(event.phase=="began")then
if(event.other.type=="mossie")then
audio.play(ow)
count.life=count.life-1
if(count.life==0) then
gameOver()
end
event.other:removeSelf()
event.other=nil
else
event.other:removeSelf()
event.other=nil
end
end
end
local function countDown(e)
time_remain = time_remain-1
countdown.text = time_remain
end
local checkTimer = function()
if(time_remain == 0) then
gameOver()
end
end
function killIt(e)
if(e.phase == "ended") then
gameOver()
end
end
--spawn Bee
local function newBee(event)
bee = display.newImage("Images/lebah.png")
bee.x = 60 + math.random(160)
bee.y = -100
bee.type="other"
physics.addBody(bee, { density=1.4, friction=0.3, bounce=0.2})
checkTimer()
bee:addEventListener("touch",killIt)
end
---whenMossieIsTouched
function onTouch(mossie)
audio.play(slap_sound)
count.touch=count.touch+1
total.text="Score : "..count.touch
mossie.target:removeSelf()
--print("total"..mossietouchcount)
end
---spawn Mossie
local function newMossie(event)
--audio.play(mossie_sound)
total.text="Score : "..count.touch
life.text="Life : "..count.life
mossie = display.newImage("Images/biasa.png")
mossie.x = 60 + math.random(160)
mossie.y = -100
mossie.type="mossie"
mossie:setFillColor(255,0,0)
physics.addBody(mossie, { density=0.3, friction=0.2, bounce=0.5})
mossie.name = "mossie"
--checkTimer()
mossie:addEventListener("touch",onTouch)
end
local bottomWall = function()
--botwall=display.newRect(0,display.contentHeight,display.contentWidth*2,10)
botwall=display.newImage("Images/tangan.png")
botwall.x = 160
botwall.y = 500
botwall:setFillColor(22,125,185,255)
botwall.type="botwall"
botwall.collision=collisionListener
physics.addBody(botwall,"static",{ density=100.0, friction=0.0, bounce=0.0})
botwall:addEventListener("collision",botwall)
end
local gameActivate = function()
gameIsActive = true
end
local gameStart = function()
local gametmr = timer.performWithDelay(1000, countDown, 0)
local dropMossie = timer.performWithDelay(1000 , newMossie, -1)
local dropBee = timer.performWithDelay(1800 , newBee, -1)
local pauseGame = function(e)
if(e.phase=="ended") then
audio.play(buttonSound)
physics.pause()
timer.pause(gametmr)
pauseBtn.isVisible = false
resumeBtn.isVisible = true
return true
end
end
local resumeGame = function(e)
if(e.phase=="ended") then
audio.play(buttonSound)
physics.start()
timer.resume(gametmr)
pauseBtn.isVisible = true
resumeBtn.isVisible = false
return true
end
end
pauseBtn:addEventListener("touch", pauseGame)
resumeBtn:addEventListener("touch", resumeGame)
resumeBtn.isVisible = false
bottomWall()
gameActivate()
end
gameStart()
return scene
首先,非常感谢你的回复。 所以,我现在关心的是我没有想法把代码放在哪里.. 现在,我已经把所有的背景,蚊子,蜜蜂,timetext放在函数create中。我将它们插入到sceneGroup中,我添加了eventListener。 那么,我应该在哪里放置或如何保持产卵的蚊子和蜜蜂? 如何设置倒数计时器? 我应该把所有这些代码放在哪里? – 2014-11-05 03:10:04
您可以将所有代码放入创建中。唯一需要记住的是将显示对象添加到sceneGroup/Scene视图。 – 2014-11-05 13:37:01