Open zakki opened 3 years ago
現状はユーザー定義関数の実行が無限ループ内で行われるので動作が止まってしまいます。 具体的にはこういったコードで、ユーザー定義関数内で有効な操作があるまで画面更新を行わずawaitループを回すようなプログラムが動きません。 https://github.com/AmefuriTell/amayadori/blob/a5ff39165aac7b11b731e3dd37e5da49ecab1ab9/reversi/Reversi.hsp
await
解決案の一つとしてはasyncifyを使うと大きな変更なく上のようなプログラムも動くようになりました。 ただし、出力されるhsp3dish.jsのサイズが元の1.9Mから2.4MBに増えました。 これは、asyncifyを適用する関数をコンパイル時に指定すれば軽減できるそうです。 https://github.com/onitama/OpenHSP/compare/master...zakki:em-asyncify
他の対応として素直にはcode_callfunc()内で実行せずに親側で実行することも考えられますが、手を入れる必要のある個所が多そうです。
code_callfunc()
ご提案ありがとうございます。参考にさせて頂きます。
Asyncify版を更新しました。
emscripten_sleep()
requestAnimationFrame
全体的にWindows向けとWeb向けを共通で開発するにはメリットが多いと思いますが、Web特化だとデメリットもあります。
現状はユーザー定義関数の実行が無限ループ内で行われるので動作が止まってしまいます。 具体的にはこういったコードで、ユーザー定義関数内で有効な操作があるまで画面更新を行わず
await
ループを回すようなプログラムが動きません。 https://github.com/AmefuriTell/amayadori/blob/a5ff39165aac7b11b731e3dd37e5da49ecab1ab9/reversi/Reversi.hsp解決案の一つとしてはasyncifyを使うと大きな変更なく上のようなプログラムも動くようになりました。 ただし、出力されるhsp3dish.jsのサイズが元の1.9Mから2.4MBに増えました。 これは、asyncifyを適用する関数をコンパイル時に指定すれば軽減できるそうです。 https://github.com/onitama/OpenHSP/compare/master...zakki:em-asyncify
他の対応として素直には
code_callfunc()
内で実行せずに親側で実行することも考えられますが、手を入れる必要のある個所が多そうです。