0

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

画像をタッチすると、changelanguage関数が呼び出されています。その関数には

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") を呼び出します。

ただし、ストーリーボードでこれを行うことができます。(これが頻繁に行われる場合は、切り替えを検討する価値があるかもしれません。代わりに、reset.lua などのファイルを作成し、そこに関数を記述して、好きなシーンをリセットして元に戻すだけで効果的にリロードすることもできます。再び前のシーンに戻ります。)

于 2012-07-07T09:22:49.867 に答える