AX

電霊ログ

私のやってるサイト、電子の言霊の活動ログ

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • [HSP超入門] ラベル4

ラベルへジャンプする命令にはこれまでに覚えた goto と gosub の2つがあり、HSPはラベルへジャンプする時 必ず goto か gosub のどちらかで行われます。
では button 命令はどちらかと言うと片道切符の goto でラベルジャンプをしています。しかし button 命令でも gosub を使ってジャンプしたい時があります、そういう時のためにHSPではちゃんとその方法が用意されています。
button 命令で gosub を使うには次のようにします。

button gosub "ボタン名",*label

button 命令の直ぐ横に gosub と書くだけです。その後に通常の button と同じパラメーターを指定します。
gosub "ボタン名"
   ↑
ここにはスペースを入れなくても問題有りませんが見やすさのために入れる様にしてください。
「button gosub サンプル1」

button gosub "button",*label
stop

*label
mes "ラベルだお!"
return

このサンプルの場合通常の button 命令の時と同じように動作して分かり辛いですが、ボタンを押した後は return 命令によって stop 命令に戻ってきています。

実は button 命令は HSP のプログラムが止まっている時にジャンプしています。止まっている時と言うのは stop や wait が使われた時です。前に「HSPにくっ付いたウィンドウズの機能は HSP が止まっている時に動いている」と言う話をしましたが、実はボタンはウィンドウズの機能を使っているので HSPが止まっている時にだけ機能します。
button gosub の場合もこれと同じですが、return 命令が実行された時に元の stop か wait に帰ってくると言う事にだけ注意して下さい。
これを知っていればどのタイミングでボタンジャンプが来るか把握する事が出来ます。
「button gosub サンプル2」

button gosub "button",*label
*main
mes "ウェイトの上"
wait 100
mes "ウェイトの下"
goto *main

*label
mes "ボタンクリック"
return

このスクリプトではボタンを押した時 何度ためしても、
ウェイトの上
ボタンクリック
ウェイトの下
の順番でしか表示され無い事が分かります。つまり wait の所でしか ボタンジャンプが起ていないという事です。

ここで間違えないで欲しいのは、HSP が停止している時にジャンプをするのは、button 命令だけで、単品として実行した時の goto 命令や gosub 命令は実行された瞬間にジャンプする と言う事を理解してください。(間違えないと思うけど一応ね)


button gosub "",*label と同様に、
button goto "",*label と明示的に書く事も出来ます。
でも面倒くさいので普通は省略します。
関連記事

コメント

コメントの投稿

   管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。