Function 与控制器的帧事件问题

Function 与控制器的帧事件问题,function,lua,event-handling,coronasdk,Function,Lua,Event Handling,Coronasdk,我无法根据事件侦听器和全局变量更改场景 基本上,在进行某些选择后,场景会重复,这会增加变量finalcount,因为选择的级别需要限制。当计数器达到4时,场景应该改变,这使得finalcountscene变量等于1。这将触发场景更改,而不是scenechangeworking5次。因此,该功能起作用,但场景不会改变。请帮忙!代码可以在下面找到 local function scenechangecount (event) if gameState.finalcountscene == 1

我无法根据事件侦听器和全局变量更改场景

基本上,在进行某些选择后,场景会重复,这会增加变量
finalcount
,因为选择的级别需要限制。当计数器达到4时,场景应该改变,这使得
finalcountscene
变量等于1。这将触发场景更改,而不是
scenechangeworking
5次。因此,该功能起作用,但场景不会改变。请帮忙!代码可以在下面找到

local function scenechangecount (event)
    if gameState.finalcountscene == 1 then
        Runtime:removeEventListener( "enterFrame",  maincount )
        director:changeScene ("gamemenu")
        print("scene change working")
        Runtime:removeEventListener( "enterFrame",  scenechangecount)
end
end

local function maincount (event)
    if gameState.finalcount == 4 then
        gameState.finalcountscene = 1
     print("working",gameState.finalcount, "scene count", gameState.finalcountscene)
     Runtime:removeEventListener( "enterFrame",  maincount)

    elseif gameState.finalcount == 3 then
       gameState.finalcount = gameState.finalcount +1
       print(gameState.finalcount)
       local message = display.newImage ("images/message.png")
       message.x = display.contentWidth/2 - display.contentWidth/6 
       message.y = display.contentHeight/2 - display.contentHeight/4 - display.contentHeight/18
       localGroup:insert(message)
       Runtime:removeEventListener( "enterFrame",  maincount )

    else
       gameState.finalcount = gameState.finalcount + 1
       print(gameState.finalcount)
       Runtime:removeEventListener( "enterFrame",  maincount )
end
end

Runtime:addEventListener ("enterFrame", scenechangecount)
Runtime:addEventListener ("enterFrame", maincount)

我看到了几个问题。首先,在第一个函数scenechangecount中,在删除enterFrame侦听器之前调用director来更改场景,这样您的函数将继续运行并尝试多次更改场景。试着把导演的电话转到这三行中的最后一行


其次,似乎每次都要删除maincountenter帧,但至少在上面只添加一次。所以我看不出你是如何以移除enterframe的方式递增计数器的

嗨,谢谢你的回复。我已经更改了对director的调用顺序以更改场景,但它多次重复调用,但没有更改场景。我删除事件侦听器的原因是,每次场景返回时,计数器都会递增。它就像一个菜单页面,按钮指向不同的外部场景,因此当该场景返回时,计数会增加。如果有人能弄明白这一点,我将永远感激你。什么条件会导致gameState.finalcount增加?我不确定是否要使用enterFrame侦听器调用maincount()。为maincount()设置enterFrame侦听器并调用它,增加gameState.finalcount变量,然后立即删除enterFrame侦听器。我不明白你是怎么回到这个函数的。您是否在其他地方设置enterFrame侦听器?