Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 改变场景会带来麻烦_Events_Lua_Storyboard_Coronasdk_Listeners - Fatal编程技术网

Events 改变场景会带来麻烦

Events 改变场景会带来麻烦,events,lua,storyboard,coronasdk,listeners,Events,Lua,Storyboard,Coronasdk,Listeners,添加了指向情节提要项目的链接,但出现错误 项目- 原始主题- 我已经尝试过多次改变场景,它要么让玩家出现故障并四处移动,要么我尝试应用一个nil值,或者坏参数预期代理,以及所有其他疯狂的东西。为了让事情对我们两人来说都更简单,我给你发了代码,场景没有改变,因为这是一个完全混乱的局面。我已经试了好几个星期了,但都做不好。我知道我问你什么似乎是不可能的代码,感觉我什么都没做,但我无法让场景在没有大量错误的情况下改变 请告诉我要执行的代码: local function onCollision( ev

添加了指向情节提要项目的链接,但出现错误

项目-

原始主题-

我已经尝试过多次改变场景,它要么让玩家出现故障并四处移动,要么我尝试应用一个nil值,或者坏参数预期代理,以及所有其他疯狂的东西。为了让事情对我们两人来说都更简单,我给你发了代码,场景没有改变,因为这是一个完全混乱的局面。我已经试了好几个星期了,但都做不好。我知道我问你什么似乎是不可能的代码,感觉我什么都没做,但我无法让场景在没有大量错误的情况下改变

请告诉我要执行的代码:

local function onCollision( event )
  if event.phase == "began" then
    -- go to nex​t 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。即使您更改场景,该事件仍将触发,因此会给您和错误,因为它引用了已删除的场景。经验法则,“如果你不需要它,就把它拿走。”

另一方面,你应该把所有的图形都放在一个组中,这样在故事板之间传输起来就更容易了。