我的game.lua文件的更新代码。
local composer=require("composer")
local physics=require("physics")
local widget=require("widget")
local scene=composer.newScene()
physics.setDrawMode("normal")
--erased system activate check later
system.activate("multitouch")
--CHECK THIS _H AND _W
_H=display.contentHeight
_W=display.contentWidth
physics.start()
physics.setGravity(0,-5)
trumps=0
numTrumps=100
startTime=20
totalTime=20
timeLeft=true
playerReady=false
Random=math.random
local function Restart(event)
if "began"==event.phase then
if(timeLeft~=false) then
timer.cancel(gameTimer)
end
end
if "moved"==event.phase then
end
if "ended"==event.phase then
composer.gotoScene("restarttest")
end
end
local function gameOver(condition)
if (condition=="winner") then
screenText.text="Adios Trump!"
elseif (condition=="notbad") then
screenText.text="Barely stopped Trump"
elseif (condition=="loser") then
screenText.text="Ready for That Wall!"
end
end
local function removeTrumps(obj)
obj:removeSelf()
trumps=trumps-1
if (timeLeft~=false) then
if(trumps==0) then
timer.cancel(gameTimer)
gameOver("winner")
elseif(trumps<=40) then
gameOver("notbad")
elseif(trumps>=31) then
gameOver("loser")
end
end
end
local function countDown(event)
if (startTime==totalTime) then
playerReady=true
screenText.text="Hurry!"
end
startTime=startTime-1
timeText.text="Time: "..startTime
if (startTime==0) then
timeLeft=false
end
end
--[[local function spawn(params)
local myTrump=display.newImage(params.image, 25, 25)
myTrump.myTrumpTable=params.myTrumpTable
myTrump.index=#myTrump.myTrumpTable+1
myTrump.myName="Donald: ".. myTrump.index
if params.hasBody then
myTrump.density=.1
myTrump.friction=0
myTrump.bounce=.9
myTrump.radius=9
myTrump.bodyType="dynamic"
physics.addBody(myTrump,"dynamic",{density=myTrump.density, friction=myTrump.friction, bounce=myTrump.bounce,radius=myTrump.radius})
end
myTrump.myTrumpTable[myTrump.index]=myTrump
return myTrump
end
local spawnTable={}
for i=1, 100 do
local spawns=spawn(
{
image="tp.png",
myTrumpTable=spawnTable,
hasBody=true,
bounce=.9,
radius=9,
density=.1,
bodyType="dynamic",
}
)
end
--]]
local function startGame()
myTrump=display.newImageRect("tp.png",25,25)
myTrump.x=Random(50,_W-50)
myTrump.y=(_H+10)
physics.addBody(myTrump,"dynamic",{density=.1,friction=0,bounce=.9,radius=9})
function myTrump:touch(event)
if(timeLeft~=false) then
if (playerReady==true) then
if(event.phase=="ended") then
removeTrumps(self)
end
end
end
end
myTrump:addEventListener("touch",myTrump)
trumps=trumps+1
if(trumps==numTrumps) then
gameTimer=timer.performWithDelay(1000,countDown,totalTime)
else
playerReady=false
end
end
local gameTimer=timer.performWithDelay(20,startGame,numTrumps)
function scene:create(event)
local screenGroup=display.newGroup()
background=display.newImage(screenGroup,"tflag.png")
but1=widget.newButton{screenGroup,label="Restart",onEvent=Restart}
but1.x=_W/2+150
but1.y=_H-10
screenText=display.newText(screenGroup,"...Waiting for Trump...",0,0,native.systemFont,16*2)
screenText.xScale=.5
screenText.yScale=.5
screenText.anchorX=(0)
screenText.anchorY=(0)
screenText.x=_W/2-210
screenText.y=_H-20
timeText=display.newText(screenGroup,"Time:"..startTime,0,0,native.systemFont,16*2)
timeText.xScale=.5
timeText.yScale=.5
timeText.anchorY=0
timeText.anchorX=0
timeText.x=_W/2
timeText.y=_H-20
leftWall=display.newRect(screenGroup,483,50,1,1000)
leftWall:setFillColor(0,0,200)
rightWall=display.newRect(screenGroup,0,0,1,1000)
rightWall:setFillColor(0,0,200)
ceiling=display.newRect(screenGroup,150,0,1000,1)
ceiling:setFillColor(0,0,200)
physics.addBody(leftWall,"static",{bounce=.1})
physics.addBody(rightWall,"static",{bounce=.1})
physics.addBody(ceiling,"static",{bounce=.1})
end
function scene:show(event)
local screenGroup=display.newGroup()
if event.phase=="will" then
end
if event.phase=="did" then
end
end
function scene:hide(event)
local screenGroup=display.newGroup()
if event.phase=="will" then
end
if event.phase=="did" then
Runtime:removeEventListener("touch",myTrump)
end
end
function scene:destroy(event)
if event.phase=="will" then
physics.removeBody(leftWall)
physics.removeBody(rightWall)
physics.removeBody(ceiling)
physics.removeBody(myTrump)
display.remove(myTrump)
display.remove(timeText)
display.remove(screenText)
display.remove(but1)
display.remove(background)
display.remove(screenGroup)
end
if event.phase=="did" then
end
end
scene:addEventListener("create",scene)
scene:addEventListener("show",scene)
scene:addEventListener("hide",scene)
scene:addEventListener("destroy",scene)
return scene
现在这是我的重启文件的代码
local composer=require("composer")
local scene=composer.newScene()
--background
function scene:create(event)
--background=display.newImage(screenGroup,"tflag.png")
end
function start(event)
if event.phase=="began" then
--composer.removeScene("game1")
end
if event.phase=="ended" then
--composer.gotoScene("game1")
end
end
function scene:show(event)
--background:addEventListener("touch",start)
if event.phase=="will" then
composer.removeScene("game1")
else if event.phase=="did" then
composer.gotoScene("game1")
end
end
end
function scene:hide(event)
if event.phase=="will" then
end
if event.phase=="did" then
--background:removeEventListener("touch",start)
end
end
function scene:destroy(event)
end
scene:addEventListener("create",scene)
scene:addEventListener("show",scene)
scene:addEventListener("hide",scene)
scene:addEventListener("destroy",scene)
return scene
我唯一的问题是,当我重新启动时,王牌的图像不再出现在屏幕上但仍然存在,但只是看不见你可以说。因此,当重新开始游戏后新图像进入时,他们不能像他们应该那样进入屏幕顶部,因为他们被前一场比赛中看不见的“王牌”所阻挡。
我的游戏是基于这个游戏,但没有气球,而是有唐纳德特朗普的照片。 https://www.raywenderlich.com/22064/how-to-make-a-simple-game-with-corona
答案 0 :(得分:2)
我对使用composer也很陌生,但是当你调用removeScene(&#34; game1&#34;)时,这会调用场景:destroy函数。在此函数中,您需要删除已创建的显示对象。因为你没有这样做,很可能对象仍然存在于你新创建的对象后面,这会引起奇怪的物理问题。如果这有帮助,请告诉我。