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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1208
POXEI-DOONchkboxを使ってチェックを入れるとgotoのコマンドを実行ようにしたいです(初心者)5解決


POXEI-DOON

リンク

2020/12/8(Tue) 14:13:36|NO.91885

HSP初心者です
chkboxを使ってチェックを入れたときにgotoにいくようにしたいです
ループじゃなくて1回だけ実行したいです
よろしくお願いします



この記事に返信する


とあるプログラマ

リンク

2020/12/8(Tue) 18:32:07|NO.91886

●方法1:チェックボックスの状態をループで監視する

メリット:簡単
デメリット:ループで監視するので、ループの待機時間ぶんだけラグが発生する


screen 0 chkbox "チェック", piyo repeat // 1回だけということなのでbreakして終わる if (piyo == 1) : break wait 10 loop // hoge に行く。hogeの先で止まるから1回しか実行されない goto *hoge stop *hoge dialog "チェックが押されました" stop


●方法2:HSPの標準ボタンをチェックボックスにしてしまう (ボタンスタイルの変更)

メリット:押した瞬間だけ処理が実行されるのでラグが無い。さらにCPU負荷も低い

デメリット:初心者には恐らく仕組みが分からない。「1回だけ」という制約だと場合分けが必要なので、少々面倒


#include "user32.as" #define global GWL_STYLE $FFFFFFF0 #define global WS_CHILD $40000000 #define global WS_VISIBLE $10000000 #define global BS_AUTOCHECKBOX $00000003 screen 0 button goto "チェック", *hoge hCheck = objinfo_hwnd(stat) //ウィンドウハンドル取得 // ボタンスタイルでBS_AUTOCHECKBOXを指定 SetWindowLong hCheck, GWL_STYLE, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX stop // 注意:この*hogeへはチェックボックスがクリックされるたびに飛んできます *hoge // 最初の一回だけ if (pressed == 0) { pressed = 1 dialog "チェックが押されました" } stop



ふじこlp

リンク

2020/12/8(Tue) 18:47:40|NO.91888

出来ました。

chkbox "Foooooo!",a repeat if a=1:goto *label1 wait 1 loop *label1 mes "Wiiiiiiiii!" stop



とあるプログラマ

リンク

2020/12/8(Tue) 19:02:33|NO.91889

>>ふじこlpさん

その方法だとlooplevネストが減らないので、breakを使うかrepeat〜loop以外のループ(while 1〜wend や *main〜goto *main など)を使いましょう。

このコードでは影響はほぼないと思いますが、HSP3はlooplevは32以上でネストエラー吐くので…



POXEI-DOON

リンク

2020/12/8(Tue) 20:38:48|NO.91890

ありがとうございます
もう1つお願いがあって
チェックボックスが何回でも押せて押したときにgotoでプログラムに飛んでくような
プログラムも作って欲しいです
ご迷惑をおかけしすいません



POXEI-DOON

リンク

2020/12/8(Tue) 20:49:41|NO.91891

解決しました



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.91885への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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