我正在使用使用物理引擎的Corona SDK进行游戏,并且遇到了一个非常烦人的故障:每当我击中小行星并按下后退按钮时,再次按下播放,绿色家伙的跳跃值会更高。
我会感激任何帮助!!
这是我的代码:
主档案:
local Physics = require("physics")
Physics.start()
centerX = display.contentCenterX
centerY = display.contentCenterY
myScene = require("scene")
myHero = require("hero")
myGoomba = require("badguy")
myButtons = require("buttons")
myMenu = require("mainmenu")
myMenu.drawMainMenu()
playButton:addEventListener( "tap", myMenu.play )
的MainMenu:
local mainmenu = {}
local Physics = require("physics")
Physics.start()
function mainmenu.drawMainMenu()
menuTheme = audio.loadStream("Music/menuTheme.ogg")
menuThemeChannel = audio.play( menuTheme, { channel=1, loops=-1, fadein=3000 } )
background = display.newImage("menuBackground.png")
background.x = display.contentCenterX
background.y = display.contentCenterY
background:scale(1.2, 1.2)
playButton = display.newImage("playButton.png")
playButton.x = display.contentCenterX
playButton.y = display.contentCenterY - 75
playButton:scale( .3, .3 )
end
function mainmenu.play()
print("mainmenu - tap registered, preparing to load game..")
audio.stop(1)
myScene.sayHello()
myScene.drawScene()
myHero.sayHello()
myHero.drawHero()
myGoomba.hello()
myGoomba.drawBadGuy()
myButtons.sayHello()
myButtons.drawButtons()
myGoomba.move()
gameTheme = audio.loadStream("Music/playTheme.ogg")
gameThemeChannel = audio.play( gameTheme, { channel=2, loops=-1, fadein=0 } )
jumpButton:addEventListener("tap", myButtons.jump)
backButton:addEventListener("tap", myButtons.goBack)
end
function mainmenu.sayHello()
print("mainmenu - Hello....")
end
return mailmen
按钮:
local buttons = {}
local Physics = require("physics")
Physics.start()
function buttons.drawButtons()
jumpButton = display.newImage( "button.png")
jumpButton.x = 473
jumpButton.y = 305
jumpButton:scale( .2, .7 )
slideButton = display.newImage("button.png")
slideButton.x = 5
slideButton.y = 305
slideButton:scale(.2, .7)
backButton = display.newImage("backButton.png")
backButton.x = display.contentCenterX - 245
backButton.y = display.contentCenterY - 100
backButton:scale(.11, .11)
end
function buttons.jump()
--work on decreasing air time by increasing gravity...
instance2:applyLinearImpulse(0, -0.12, instance2.x, instance2.y)
--Applying 0 force in the X direction and -0.12 in the Y direction. Y is negative because
--down is considered positive by the physics engine.
--Apply force to the center of the green guy, hence instance.x & instance.y
end
function buttons.goBack()
print("buttons - loading main menu...")
audio.stop(2)
myMenu.drawMainMenu()
--reset gravity and jump-impulse values here
end
function buttons.sayHello()
print("buttons - Hello....")
end
return buttons
英雄:
local hero = {}
local Physics = require("physics")
Physics.start()
function hero.drawHero()
print("hero - loading hero...")
greenGuysheet = graphics.newImageSheet( "greenman.png", { width=128, height=128, numFrames=15 } )
-- play 15 frames every 500 ms
instance2 = display.newSprite( greenGuysheet, {start=1, count=15, time=500 } )
instance2.name = "greenGuy"
Physics.addBody(instance2, "dynamic", {radius = 20, bounce = 0})
instance2.x =100
instance2.y = 260
instance2.gravityScale = 2.5
instance2:play()
end
function hero.sayHello()
print("hero - Hello....")
end
return hero
答案 0 :(得分:2)
您好像不使用composer模块。建议使用它来管理场景。在教程Introducing the Composer API中阅读有关它的更多信息。
我不确定,但似乎你正在添加事件监听器
jumpButton:addEventListener("tap", myButtons.jump)
backButton:addEventListener("tap", myButtons.goBack)
每次调用mainmenu.play
函数时。返回游戏并点击跳转按钮后,会调用两次侦听器。因此,在转到菜单或仅添加一次点击侦听器之前,您需要删除点击侦听器。阅读有关Corona documentation上的事件监听器的更多信息。