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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0609
AKIHIROgosubでbuttonができない件6解決


AKIHIRO

リンク

2007/6/9(Sat) 20:37:32|NO.8861


*hajime gosub *main await 1000 end *main button "A",*fmain stop *fmain return

というソースができないのですが、無理なのでしょうか?



この記事に返信する


Drip

リンク

2007/6/9(Sat) 20:39:46|NO.8862

Dripです。

 AKIHIROさん、こんにちは。
button命令でgosubと同じジャンプ形態を取る方法は、マニュアルに詳しくかかれています。
簡単にbutton命令の詳細を調べるためには、スクリプトエディタにbuttonと入力し、
F1キーを押して下さい。



AKIHIRO

リンク

2007/6/9(Sat) 21:15:54|NO.8867

Dripさんこんばんは。

button gosubのやり方がしたいのではなく。

gousubで飛んでbuttonの処理をしreturnで戻るというものです。
上のソースのbuttonのところをbutton gosubにしてもawaitからendへのところへ戻れません。
buttonの処理を多くするのでgosubでまとめたかったのですが無理でした。

ということで、良い解決策はgosubを使わないことですかね?



GENKI

リンク

2007/6/9(Sat) 21:37:16|NO.8868

> buttonの処理を多くするのでgosubでまとめたかったのですが無理でした。

 ↑の意味がよくわかりません。
ボタンをたくさん作らなければいけないのか、同じボタンを何回も押す必要があるのか、あるいはそれ以外なのか。
どういった作業をしたかったのでしょうか?

 スクリプトの方はgosubの後にstop命令が来ることでgosubのreturnを使えなくなっているっぽいですね。



naznyark

リンク

2007/6/10(Sun) 01:35:37|NO.8871

 ボタンによる goto ジャンプはジャンプ時にその時点での
サブルーチンジャンプ情報を破棄するのでそのスクリプトの形では無理です。
 gosub ジャンプを使った以下のような形ではどうでしょうか。


*hajime gosub *main await 1000 end *main button gosub "A",*fmain f = 0 repeat wait 3 if ( f ) : break loop return *fmain f = 1 return



kz3

リンク

2007/6/10(Sun) 05:26:16|NO.8874

あまりお勧めできないgotoだらけの例。
用途を限定すれば戻り先のラベルを配列を使って複数管理することでネストも可能。

// // サブルーチン(gosub-return)でない処理ルーチンを、 // ラベル変数を使ってサブルーチンのように扱う例。 // c = 255, 0, 0, 0, 255, 0, 0, 0, 255 *main color c(i*3), c(i*3+1), c(i*3+2) boxf lb_ret = *@f ; 呼び出しルーチン(サブルーチンではない)からの戻り先を保存しておく goto *button_wait ; gosubとしない *@ i = (i+1)\3 goto *main *button_wait // ボタンによる待機ルーチン // (buttonを使用しているためサブルーチンとして書けない例) pos ginfo_winx-64, ginfo_winy-24 button "次へ", *@f: id = stat stop *@ clrobj id, id ; 保存しておいた戻り先に戻る goto lb_ret



AKIHIRO

リンク

2007/6/10(Sun) 07:29:23|NO.8875

みなさまありがとうございました。
botton gousub 後にreturnがよさそうですね。

他の方のご意見も参考にさせていただきます。

みなさまありがとうございました。



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