【问题标题】:Corona sdk enterframe event issue with director导演的 Corona sdk enterframe 事件问题
【发布时间】:2012-12-09 23:49:43
【问题描述】:

我在根据事件侦听器和全局变量更改场景时遇到问题。

基本上,在做出某些选择后场景会重复,这会增加变量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)

【问题讨论】:

    标签: function lua event-handling coronasdk


    【解决方案1】:

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

    其次,您似乎每次都删除了 maincount 输入框架,但至少在上面您只添加了一次。因此,我看不到您如何以删除该输入框的方式增加计数器。

    【讨论】:

    • 您好,感谢您的回复。我已经更改了对导演的调用顺序以更改场景,但它多次迭代调用并且不更改场景。我删除事件侦听器的原因是每次返回场景时计数器都会增加。它就像一个菜单页面,其中按钮导致不同的外部场景,因此当这个场景返回时计数会增加。如果有人能弄清楚这一点,我将永远感激不尽
    • 什么条件会导致 gameState.finalcount 增加?我不确定您是否要使用 enterFrame 侦听器来调用 maincount()。您为 maincount() 设置 enterFrame 侦听器并调用它,增加 gameState.finalcount 变量,然后立即删除 enterFrame 侦听器。我不明白你是如何回到这个功能的。您是否将 enterFrame 侦听器设置在其他地方?
    猜你喜欢
    • 2013-06-11
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多