sample\iron\sample_ruffle.hsp » Plain Format
;============================================================
; sample_ruffle.hsp
;
; iron_ruffle (WebView2 + Ruffle) で任意の .swf を再生するデモ。
;
; 事前準備:
; 1) hspwebview2.dll を実行時ディレクトリに配置
; 2) https://github.com/ruffle-rs/ruffle/releases から
; "ruffle-nightly-*-web-selfhosted.zip" を取得して展開し、
; ruffle.js と *.wasm を "ruffle/" フォルダに配置
; 3) 再生したい .swf を適当な場所に置く (例: movies/hello.swf)
;
; Ruffle ランタイム未配置の場合は、黒画面 + JS エラーになるだけで
; HSP 側は落ちない。
;============================================================
#include "hsp3_net_64.as"
#include "iron_ruffle.hsp"
title "iron_ruffle demo"
screen 0, 960, 720
cls 4
sdim s_path, 1024
sdim s_log, 2048
s_path = "movies/hello.swf"
objsize 120, 28
pos 8, 8
button gosub "SWF 選択", *on_pick
pos 140, 8
button gosub "ロード", *on_load
pos 272, 8
button gosub "閉じる", *on_close
pos 8, 40
mesbox s_path, 944, 24
pos 8, 648
mesbox s_log, 944, 64
ruffle_init 8, 72, 944, 568
wv_id = stat
if wv_id < 0 {
s_log = "ruffle_init 失敗: " + wv_id
} else {
s_log = "Ruffle host ready (id=" + wv_id + ")"
}
goto *loop
*on_pick
dialog "swf", 16, "Flash Movie"
if stat = 0 : return
s_path = refstr
objprm 3, s_path
return
*on_load
if wv_id < 0 : return
if s_path = "" : return
ruffle_load wv_id, s_path
s_log = "load request: " + s_path
return
*on_close
if wv_id < 0 : return
ruffle_close wv_id
wv_id = -1
s_log = "closed"
return
*loop
if wv_id >= 0 {
msg = wv_recv(wv_id)
if msg ! "" {
s_log = msg
objprm 4, s_log
}
}
await 50
goto *loop