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