Scaleform Studio プラグインと Stingray は、共通の Lua 仮想マシンを共有します。これは(Stingray と統合して実行するときに) Scaleform Studio によって実行される Lua コードが、Stingray から Lua コマンドを呼び出すことができ、Stingray が Scaleform Studio から Lua コマンドを呼び出すことができることを意味します。
Scaleform Studio プロジェクトをスタンドアロン Scaleform Studio プレーヤで実行する場合は、Scaleform Studio と Stingray 間のほとんどのコミュニケーションを scaleform.Stage.dispatch_event と Scaleform Studio および Stingray Lua スクリプトによるカスタム イベント リスナーを使用して処理することをお勧めします。
Scaleform studio プラグインにも、マウス、キーボード、タッチ イベントのようなイベントを Stingray から Studio Scaleform に送信するための scaleform.Stingray.send_message が用意されています。
注: Scaleform Studio Lua スクリプト内で Stingray の関数を呼び出すと、Scaleform Studio プロジェクトがスタンドアロン モードで実行されるのを防ぐことができます。
カスタム イベントには、scaleform.Stage.dispatch_event を使用します。
scaleform.Stage.dispatch_event を使用して他のイベント タイプを送信することができますが、このプラグインは、scaleform.Stingray.send_message を使用して、キーボード、マウス、またはタッチなどのイベントの多くも直接サポートします。
Scaleform Studio のイベント タイプの全リストについては、こちらから Lua リファレンス ドキュメントを参照してください。
既定で、マウス、キーボード、タッチ入力は、AppKit によって Stingray から Studio Scaleform に自動的に渡されます。
例: Stingray から Studio Scaleform にマウス入力を送信する
--Send Mouse Cursor motion and Left Button Down and Up events.
scaleform.Stingray.send_message("mouse_move" ,
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).x,
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).y)
--Left Mouse Button Down
if(stingray.Mouse.pressed(stingray.Mouse.button_index("left"))) then
scaleform.Stingray.send_message("mouse_down",
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).x,
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).y, 0)
end
--Left Mouse Button Up
if(stingray.Mouse.released(stingray.Mouse.button_index("left"))) then
scaleform.Stingray.send_message("mouse_up",
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).x,
stingray.Mouse.axis(stingray.Mouse.axis_index("cursor"), stingray.Mouse.RAW, 3).y, 0)
end
例: カスタム メッセージを使用してメイン メニュー テンプレートをロードする
Stingray スクリプトから、プロジェクトをロードして、プロジェクトにカスタム イベントを送信できます。
scaleform.Stingray.load_project("template_menu.s2dproj", "content/ui/template_menu")
scaleform.Stage.dispatch_event( { eventId = scaleform.EventTypes.Custom, name = "set_title",
data = "Main Menu" } )
scaleform.Stage.dispatch_event( { eventId = scaleform.EventTypes.Custom,
name = "add_menu_item",
data = { itemText="Basic Level",
keyText=Appkit.Util.plat("1", "a", "1", "cross") } } )
scaleform.Stage.dispatch_event( { eventId = scaleform.EventTypes.Custom,
name = "add_menu_item",
data = { itemText="Exit",
keyText=Appkit.Util.plat("esc", "b", "esc", "circle")} } )
例: Stingray で Scaleform Studio カスタム リスナーを登録する
これは、提供された関数を使用して、すべてのカスタム イベントとプロセスを受け取ります。
customListener = scaleform.EventListener.create(customListener, MainMenu.on_custom_event)
scaleform.EventListener.connect(customListener, scaleform.EventTypes.Custom)
このカスタム関数はイベントを待機し、どのメニューボタンが押されたかを記録します。
MainMenu.action = nil
function MainMenu.on_custom_event(evt)
if evt.name == "button_pressed" then
if evt.data.button_type == "menu_item" then
MainMenu.action = evt.data.button_id
end
end
end