Events 改变场景会带来麻烦
添加了指向情节提要项目的链接,但出现错误 项目- 原始主题- 我已经尝试过多次改变场景,它要么让玩家出现故障并四处移动,要么我尝试应用一个nil值,或者坏参数预期代理,以及所有其他疯狂的东西。为了让事情对我们两人来说都更简单,我给你发了代码,场景没有改变,因为这是一个完全混乱的局面。我已经试了好几个星期了,但都做不好。我知道我问你什么似乎是不可能的代码,感觉我什么都没做,但我无法让场景在没有大量错误的情况下改变 请告诉我要执行的代码:Events 改变场景会带来麻烦,events,lua,storyboard,coronasdk,listeners,Events,Lua,Storyboard,Coronasdk,Listeners,添加了指向情节提要项目的链接,但出现错误 项目- 原始主题- 我已经尝试过多次改变场景,它要么让玩家出现故障并四处移动,要么我尝试应用一个nil值,或者坏参数预期代理,以及所有其他疯狂的东西。为了让事情对我们两人来说都更简单,我给你发了代码,场景没有改变,因为这是一个完全混乱的局面。我已经试了好几个星期了,但都做不好。我知道我问你什么似乎是不可能的代码,感觉我什么都没做,但我无法让场景在没有大量错误的情况下改变 请告诉我要执行的代码: local function onCollision( ev
local function onCollision( event )
if event.phase == "began" then
-- go to next lua/scene completely obliterating this one as
-- if I'm opening a whole new game
end
return true
end
如果你真的不想为我做代码,我愿意在这一点上支付
我只是想克服这个。。。请
display.setStatusBar( display.HiddenStatusBar )
local physics = require( "physics" )
physics.start( )
physics.setGravity( 0, 15 ) -- set x & y gravity to 0
local background = display.newImage( "background.jpg" )
background.x = display.contentCenterX
background.y = display.contentCenterY
local ground = display.newImage( "ground.png" )
ground.x = display.contentCenterX
ground.y = 480
physics.addBody( ground, "static", {density=1, friction=1, bounce=0.3 } )
local flag = display.newImage( "flag.png" )
flag.x = display.contentCenterX
flag.y = 50
physics.addBody( flag, "static", {density=0, friction=1, bounce=0.3 } )
local player = display.newImage( "player.png" )
player.x = display.contentCenterX
player.y = 425
physics.addBody( player, {density=0, friction=1, bounce=0.3 } )
player.isFixedRotation = true
system.setAccelerometerInterval( 100.0 )
local tiltSpeed = 2
local function onTilt( event )
movementX = tiltSpeed * event.xGravity
player.x = player.x + movementX
-- prevent player from moving offscreen
if player.x <= 30 then
player.x = 30
elseif player.x >= 310 then
player.x = 310
end
end
local function onCollision( event )
if event.phase == "began" then
-- go to next lua/scene completely obliterating this one as if I'm opening a whole new game
end
return true
end
local function onScreenTouch( event )
if event.phase == "began" then
-- make player jump
player:applyForce( 0, -4, player.x, player.y )
end
end
Runtime:addEventListener( "accelerometer", onTilt )
Runtime:addEventListener( "touch", onScreenTouch )
flag:addEventListener("collision", onCollision )
display.setStatusBar(display.HiddenStatusBar)
本地物理=要求(“物理”)
物理。开始()
物理。设置重力(0,15)——将x&y重力设置为0
本地背景=display.newImage(“background.jpg”)
background.x=display.contentCenterX
background.y=display.contentCenterY
本地地面=display.newImage(“ground.png”)
ground.x=display.contentCenterX
接地y=480
物理。addBody(地面,“静态”{密度=1,摩擦=1,反弹=0.3})
本地标志=display.newImage(“flag.png”)
flag.x=display.contentCenterX
flag.y=50
addBody(标志,“静态”{密度=0,摩擦=1,反弹=0.3})
本地播放器=display.newImage(“player.png”)
player.x=display.contentCenterX
player.y=425
addBody(玩家,{密度=0,摩擦=1,反弹=0.3})
player.isFixedRotation=true
系统设置加速度计量程(100.0)
本地倾斜速度=2
本地函数onTilt(事件)
movementX=倾斜速度*事件.X重力
player.x=player.x+movementX
--防止玩家移动到屏幕外
如果player.x=310,则
player.x=310
结束
结束
局部函数冲突(事件)
如果event.phase==“开始”,则
--转到下一个lua/场景完全抹去这一个,就好像我要开始一个全新的游戏一样
结束
返回真值
结束
Screentouch上的本地功能(事件)
如果event.phase==“开始”,则
--使运动员跳跃
玩家:applyForce(0,-4,玩家.x,玩家.y)
结束
结束
运行时:addEventListener(“加速计”,onTilt)
运行时:addEventListener(“触摸”,屏幕触摸)
标志:addEventListener(“碰撞”,onCollision)
碰撞过程中不能离开当前场景。不过,您可以做的是在碰撞发生1毫秒后让计时器调用函数。
对于碰撞事件检测器,请尝试以下代码:
local function onCollision( event )
if event.phase == "began" then
function(sceneChange)
storyboard.gotoScene(Your next scene here")
end
timer.performWithDelay(1,sceneChange,1)
end
return true
end
“希望有帮助!继续编码 只需创建一个函数,该函数将更改到下一个场景
local function changeScene()
composer.gotoScene("nextScene")
end
local function onCollision( event )
if event.phase == "began" then
changeScene()
end
return true
end
我建议使用比脚本api更新更多的api
作为建议,请删除您调用的所有EventListener,尤其是那些运行时EventListener。即使您更改场景,该事件仍将触发,因此会给您和错误,因为它引用了已删除的场景。经验法则,“如果你不需要它,就把它拿走。”另一方面,你应该把所有的图形都放在一个组中,这样在故事板之间传输起来就更容易了。