HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0116
PGGgosub内でのwaitの使い方2解決


PGG

リンク

2020/1/16(Thu) 10:33:36|NO.89254

gosubの内部で処理を止めずにwaitを使いたいです。
これを実行すると
a
a2
b
となりますが、
wait中にbの方を処理して
a
b
a2
となるようにしたいです

いい方法を教えてください、
よろしくお願いします。


*main gosub *a gosub *b goto *main *a ;タイミングを計る mes"a" wait 50 ;この間にbを処理したい mes"a2" return *b ;いろいろな処理 mes"b" return



この記事に返信する


ソラ

リンク

2020/1/16(Thu) 11:34:05|NO.89255

いくつか方法があります。
・SetTimerを設定してwait 50の時にサブルーチンする
・*a内で*bを呼び出して、その後awaitで任意の時間処理を停止させる


前者は可読性やメンテナンス性を考えるとあまりおすすめできません。

*a ;タイミングを計る mes"a" await gosub*b await 500 mes"a2" return
後者の方法ならこんな感じでしょうか。
awaitは前回した時間からの経過時間分待機するので、
waitと違い間の処理の影響を受けずに待機できます。



PGG

リンク

2020/1/16(Thu) 12:29:41|NO.89256

すいません自己解決しました。
これで想定してた動作になりました。

*main await 1 cou = cou+1;時間カウンター gosub *a gosub *b goto *main *a ;タイミングを計る if(cou=500){;500の疑似ウェイト mes"a2" cou=0 }else:if(cou=1){;1の時のみ実行 mes"a" } return *b ;いろいろな処理 if(cou=1){;1の時のみ実行 mes"b" } return



ONION software Copyright 1997-2018(c) All rights reserved.