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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0610
HHHモジュール内でonclick命令が使えない5解決


HHH

リンク

2010/6/10(Thu) 00:07:28|NO.33174

初めまして。

どうにも行き詰ってしまい、皆さんのお知恵をお借りしたいと思い投稿致します。

モジュール内でonclick命令の処理を行うと、「サブルーチン外のreturnは無効です」のエラーが出てしまいます。

#module
#deffunc A



onclick *X

repeat

 ∫

loop

*X



return
#global

というスクリプトが作りたいのです。エラーの原因を教えてください。



この記事に返信する


Hiroaki Software

リンク

2010/6/10(Thu) 00:17:48|NO.33175

onclick *Xのところをonclick gosub *Xに置換すればOK。
詳しくはonclickのマニュアルを参照のこと



HHH

リンク

2010/6/10(Thu) 01:43:00|NO.33178

なるほど・・・飛ぶときにサブルーチン扱いしていなかったというわけですね。
エラーが出なくなりました。ありがとうございました。

ただ、今度はgosubにより、returnからonclickまで戻るようになってしまいました・・・。
処理としては、
ループ中>クリック>ループ脱出>Aの呼び出し場所に戻る
               ↑
      (今はここでループの前まで戻る。結果無限ループする)

というようにしたいのですが、onclick goto だとエラーが出てしまいます。
onclickに戻ってこないようにするには、どうしたらいいでしょうか。
もしくは、onclickを使わないほうが良いのでしょうか。



info

リンク

2010/6/10(Thu) 04:36:07|NO.33182

よくわかりませんが
onclick が実行されたポイントにまで戻ることはないと思います


onclick gosub *label_OnClick repeat color rnd(255),rnd(255),rnd(255) boxf rnd(ginfo_winx) , rnd(ginfo_winy) , rnd(ginfo_winx) , rnd(ginfo_winy) wait 10 loop stop *label_OnClick title str(wparam) + " がクリックされました" return



SYAM

リンク

2010/6/10(Thu) 11:06:18|NO.33189

こうかなー?


#module #deffunc funcA mes "func A" onclick gosub *X done = 0 repeat wait 1 title "func A running..." if(done):break loop return *X mes "label X" done = 1 return #global funcA mes "END" onclick 0 stop



HHH

リンク

2010/6/10(Thu) 14:48:47|NO.33191

>onclick が実行されたポイントにまで戻ることはないと思います
すみません、その通りでした; 細かく処理順を追ったら
loop内からonclickの処理でラベルまで飛んで、その後loopの中に戻っているだけでした。

onclick gosubによるジャンプとは別に、loopの中から抜ける 
>if(done):break
が必要だったのですね・・・。

解決しました!ありがとうございました。



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