我没有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)
答案 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)
您可以将代码移动到每个场景所需的单独文件中。但是,要完成这项工作还需要做一些工作:
如果所有场景共享得分文本框(即该框位于后台阶段对象中),则必须修改代码,以便拥有允许主场景创建的setTextObject(displayObject)
文本对象并将其设置在您需要的模块中,以便场景永远不必担心它;您需要一种方法来决定何时应调用timer.performWithDelay
,例如通过increaseScoreDelayed()
和decreaseScoreDelayed()
。
如果每个场景都有自己的得分文本框显示得分,则必须有setTextObject(displayObject)
每个场景调用enterScene
事件,告诉您的模块要放置哪个显示对象得分。
无论哪种方式,本地分数都应该在共享模块中,以便分数在应用程序范围内(所有模块使用相同的分数实例)。