Stingray と Scaleform Studio 間のコミュニケーション

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 プロジェクトがスタンドアロン モードで実行されるのを防ぐことができます。

例: 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