emes命令は設定された全ての文字を表示し終わるまで次の行は実行されません。
処理を停止させないためには、emesを使わずに実装する必要があります。
;
; ゆっくり文字列を表示するサンプル
;
font msgothic,30,1
a="Hello, this is HSP. \nLet's start writing slowly."
frmwait = 6 ; 表示スピード(frmwaitフレームおきに文字を増やす)
c = 0 ; 表示する文字数
*main
redraw 1 : await 30 : redraw 0 : color 255,255,255 : boxf : color : pos 0, 0
; frmwait フレームおきに表示する文字数を増やす。
if (frmcnt \ frmwait) = 0 {
c++
}
; 2バイト文字を含む場合は、この関数だけではうまく行かないのでそれは別途注意。
mes strmid(a, 0, c)
; 処理が止まっていないことを確認
mes "フレーム数カウント:" + frmcnt
; フレーム数カウント
frmcnt++
goto *main
簡単に作ってみるとこんな感じです。考え方はこんな感じです。
なお、日本語文字列を使用する場合は、もうひと工夫が必要になります。