Scaleform Studio 플러그인과 Stingray는 공통 Lua 가상 시스템을 공유하기 때문에 Scaleform Studio에서 실행하는 Lua 코드(Stingray와 통합 실행하는 경우)가 Stingray에서 Lua 명령을 호출하고, Stingray가 Scaleform Studio에서 Lua 명령을 호출할 수 있습니다.
Scaleform Studio 프로젝트가 독립 실행형 Scaleform Studio Player에서 실행되도록 하려면 Scaleform Studio 및 Stingray Lua 스크립트에서 scaleform.Stage.dispatch_event 및 사용자 정의 이벤트 리스너를 사용하여 대부분의 Stingray와 Scaleform Studio 간 커뮤니케이션을 처리하도록 하는 것이 좋습니다.
Scaleform Studio 플러그인도 마우스, 키보드, 터치 이벤트 같은 이벤트를 Stingray에서 Scaleform Studio로 전송할 수 있는 scaleform.Stingray.send_message를 제공합니다.
참고: Stingray 함수를 Scaleform Studio Lua 스크립트 내에서 호출하면 Scaleform Studio 프로젝트를 독립 실행형 모드로 실행하지 못합니다.
사용자 정의 이벤트에 대해서는 scaleform.Stage.dispatch_event를 사용하십시오.
scaleform.Stage.dispatch_event를 사용하여 다른 이벤트 유형을 전송할 수 있지만 플러그인도 scaleform.Stingray.send_message를 통해 키보드, 마우스 또는 터치 등 대부분의 이벤트를 직접 지원합니다.
Scaleform Studio의 전체 이벤트 유형 목록은 여기에 있는 Lua 참조 문서를 참조하십시오.
기본적으로 마우스, 키보드 및 터치 입력은 AppKit를 통해 Stingray에서 Scaleform Studio로 자동 전달됩니다.
예: Stingray에서 Scaleform Studio로 마우스 입력 전송
--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")} } )
예: Scaleform Studio 사용자 정의 리스너를 Stingray에 등록
이 리스너는 모든 사용자 정의 이벤트를 수신하고, 제공된 함수를 사용하여 이를 처리합니다.
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