要は、タップしたら次のシーンに進むあたりを実装します。 実装したいことは
- プロローグのメッセージと “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 っぽいのか?」は、現在模索中です。 (いずれ実装します。
