settings.lua
local lang_table = {
{image = display.newImage("en.png"), x = 600, y = 400, lang = "1033", i = 1},
{image = display.newImage("fr.png"), x = 600, y = 400, lang = "fr", i = 2},
{image = display.newImage("dk.png"), x = 600, y = 400, lang = "dk", i = 3},
{image = display.newImage("ge.png"), x = 600, y = 400, lang = "ge", i = 4} }
local function changelanguage (event)
if event.phase == "ended" then
lang_table[event.target.i].image.isVisible = false
if event.target.i == 4 then
lang_table[1].image.isVisible = true
_G.value = event.target.lang
director:changeScene("settings")
else
lang_table[event.target.i+1].image.isVisible = true
_G.value = lang_table[event.target.i+1].lang
director:changeScene("settings")
end
end
return true
end
for i = 1,#lang_table do
local img_display = lang_table[i].image
img_display.x = lang_table[i].x
img_display.y = lang_table[i].y
img_display.i = lang_table[i].i
img_display.lang = lang_table[i].lang
if _G.value ~= lang_table[i].lang then
img_display.isVisible = false
end
img_display:addEventListener("touch", changelanguage)
langGroup:insert(img_display)
end
当我触摸图像时,正在调用更改语言功能。在该功能中有
director:changeScene
但这不起作用。基本上,我想要的是每当图像有触摸事件时我都想要调用相同的lua文件。但是这没有发生。然后我做了什么改变了功能“changelanguage “到
_G.t =1
local function changelanguage (event)
if event.phase == "ended" then
lang_table[event.target.i].image.isVisible = false
if event.target.i == 7 then
lang_table[1].image.isVisible = true
_G.value = event.target.lang
director:changeScene("settings")
else
lang_table[event.target.i+1].image.isVisible = true
_G.value = lang_table[event.target.i+1].lang
if _G.t ==1 then
director:changeScene("..\settings")
_G.t = _G.t+1
elseif _G.t ==2 then
director:changeScene("..\..\settings")
end
end
end
return true
end
现在,它正在工作。但我不知道为什么会发生这种情况。任何人都可以告诉我为什么会发生这种情况。我可以使用相同的director:changeScene("settings")
一次又一次地在触摸事件上更改场景。
答案 0 :(得分:1)
我尝试使用空场景向右切换回另一个场景以重新启动它。 起初它根本不工作,我不得不在空场景中显示一个按钮,并附加一个功能,这样当用户按下它时,它会切换回旧场景,这会重新启动它。 / p>
然而,进一步搜索问题,我发现Director类v.1.3及更高版本可以通过使用director:changeScene(“”)函数调用它来重新加载你所在的场景!
(在这里阅读: http://rauberlabs.blogspot.com/2011/07/director-class-13.html)
因此,如果你在settings.lua中,并且想要重新加载它,只需在相同的settings.lua中包含director:changeScene(“settings”)(就像你第一次那样)。
当然记得将director.lua更新到最新版本。 我想你仍然可以从这里下载它:
答案 1 :(得分:0)
您无法使用Director更改为您已经在的场景,例如,在来自settings.lua,no。中的呼叫导演:changeScene(“settings”),
但是,您可以在Storyboard中执行此操作。 (可能值得考虑一个开关,如果这是你将要做很多事情,或者你可以制作一个文件,如reset.lua和写入功能在那里有效地重新加载你喜欢的任何场景只需更改为重置和返回再次到上一个场景。)