0

设置.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")不能在触摸事件上一次又一次地改变场景。

4

2 回答 2

1

我尝试使用空场景切换回另一个场景以重新启动它。起初它根本不起作用,我不得不在空场景中显示一个按钮,并为其附加一个功能,以便当用户按下它时,它会切换回旧场景,这将重新启动它。

然而,进一步谷歌搜索问题,我发现 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更新到最新版本。我想你仍然可以从这里下载它:

https://bitbucket.org/ricardorauber/corona/downloads

于 2013-01-25T20:06:47.023 回答
0

您不能使用 Director 更改到您已经在其中的场景,例如,从 settings.lua 中调用 director:changeScene("settings") ,不。

但是,您可以在 Storyboard 中执行此操作。(如果这是你要做的很多事情,可能值得考虑切换,或者你可以制作一个文件,如 reset.lua 并在其中编写函数,以有效地重新加载你喜欢的任何场景,只需更改为 reset 并返回再次回到之前的场景。)

于 2012-07-07T09:22:49.867 回答