如何在corona sdk中使用在其他场景中的场景中创建的功能?

时间:2014-05-23 12:02:13

标签: sdk lua corona

我没有Corona SDK的经验,请帮助。

我在场景中创建了一个分数功能,当选择正确答案时,会添加+1-1会出现错误答案。

问: 如何在不重新启动乐谱的情况下在我创建的其他场景中使用\调用此函数?

-------------------score------------------------
local score = 0

local scoreTxt = display.newText("0", 0, 0, "Helvetica", 40)
scoreTxt:setReferencePoint(display.TopLeftReferencePoint)
scoreTxt.x = display.screenOriginX + 700
scoreTxt.y = display.screenOriginY + 37
scoreTxt:setTextColor(2, 2, 2)
------------------------------------------------------
---------------------score added 10-----------------------------

function updateScore()
    score = score + 1
    scoreTxt.text = string.format(" %d", score)
end

local scoretimer = timer.performWithDelay(1, updateScore, 1)
---------------------------------------
---------------------score minus 1-----------------------------

function minusScore()
    score = score - 1
    scoreTxt.text = string.format(" %d", score)
end

local scoretimer = timer.performWithDelay(1, minusScore, 1)

2 个答案:

答案 0 :(得分:1)

我认为实现这一目标的最快方法是创建一个存储得分的全局变量。像_G.score = 0。

然后,在你的updateScore()函数和减去分数内,你设置_G.score你想要的值。像这样:

    function updateScore()
      score = score + 1
     _G.score = score --set the score to the global variable
    scoreTxt.text = string.format(" %d", score)
 end

    local scoretimer = timer.performWithDelay(1, updateScore, 1)
   ---------------------------------------
    ---------------------score minus 1-----------------------------

   function minusScore()
        score = score - 1
        _G.score = score --set the score to the global variable
        scoreTxt.text = string.format(" %d", score)
    end

现在你可以从任何地方调用_G.score,它会给你当前的分数。我建议你使用一些评分模块,即GGData(https://github.com/GlitchGames/GGScore)。

上述方法可能不是最佳解决方案,但对于快速解决方法,它可能有效。

答案 1 :(得分:0)

您可以将代码移动到每个场景所需的单独文件中。但是,要完成这项工作还需要做一些工作:

  1. 如果所有场景共享得分文本框(即该框位于后台阶段对象中),则必须修改代码,以便拥有允许主场景创建的setTextObject(displayObject)文本对象并将其设置在您需要的模块中,以便场景永远不必担心它;您需要一种方法来决定何时应调用timer.performWithDelay,例如通过increaseScoreDelayed()decreaseScoreDelayed()

  2. 如果每个场景都有自己的得分文本框显示得分,则必须有setTextObject(displayObject)每个场景调用enterScene事件,告诉您的模块要放置哪个显示对象得分。

  3. 无论哪种方式,本地分数都应该在共享模块中,以便分数在应用程序范围内(所有模块使用相同的分数实例)。