要は、タップしたら次のシーンに進むあたりを実装します。 実装したいことは
- プロローグのメッセージと “Tap to Start” っていう文字列の表示。 “Tap to Start” の方は明滅させたい。
- スクリーンがタップされたら次の状態に進ませる。
だけです。
そして、これを実装したコードが、以下のようになります。
--! \file --! \brief プロローグの表示 require("name_input") _G.prologue = {} local layer_ = nil local is_tapped_ = false local function update_components() Gui.layers:remove(layer_) layer_ = Layer:new() -- !!! 背景画像 local message = Gui.set_text_label(C.prologue.message) layer_:insert(message) local tap_message = Gui.set_text_label(C.prologue.tap_message) layer_:insert(tap_message) -- tap_message の明滅を指示する -- !!! Gui.layers:push_front(layer_) end prologue["Enter"] = function(state) update_components() is_tapped_ = false -- フェード・イン Gui.screen:fade_in(C.fade_second) end prologue["Execute"] = function(state) if Input:force_redraw() then update_components() end -- tap されたら次のシーンに遷移させる local x, y, up = Input:pointer() if up then Gui.screen:fade_out(C.fade_second) is_tapped_ = true end -- フェードアウトが完了したら次のシーンに遷移させる if is_tapped_ and not Gui.screen:is_fading() then state:change_to(name_input) end end prologue["Exit"] = function(state) Gui.layers:remove(layer_) layer_ = nil end
どこに何を配置する、という画像リソースの場所などの状態は constants.lua に記述してあるので、このコードでは主にロジック的なあたりを表現しています。
「文字列を明滅させるあたりは、どう記述するのが Moai SDK っぽいのか?」は、現在模索中です。 (いずれ実装します。