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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0212
悩み中の人○×ボタンの複数設置について3解決


悩み中の人

リンク

2011/2/12(Sat) 15:31:47|NO.37035

現在、押すたびに○×の表示を入れ替えるボタンを作っています。


button "×",*iti stop *iti a++ if a\2==1 : objprm stat,"○" if a\2==0 : objprm stat,"×" stop

これを複数設置するに当たり、


dim stano,3 stano = 0,2,4 dim stano2nd,3 stano2nd = 1,3,5 dim a,3 dim b,3 repeat 3 pos 125,80+25*cnt button "×", *iti pos 195,80+25*cnt button "×", *ni loop stop *iti repeat 3 if stat=stano.cnt : a.cnt++ if a.cnt\2==1 : objprm stat,"○" if a.cnt\2==0 : objprm stat,"×" stop loop stop *ni repeat 3 if stat=stano2nd.cnt : b.cnt++ if b.cnt\2==1 : objprm stat,"○" if b.cnt\2==0 : objprm stat,"×" stop loop stop
このように記述してみたのですが、反応があったり無かったりで、きちんと動作しません。
ボタンのジャンプ先をボタンごとに設定すれば問題は無いのですが、
たくさん設置するので、管理しやすくするため短い記述が出来ないかと悩んでます。
助言をいただけたら幸いです。



この記事に返信する


hexa.hemi

リンク

2011/2/12(Sat) 15:51:59|NO.37036

repeat 3からloopまでの間にstopが入っています。
そのstopにif stat=stano.cnt : をつけるとうまく動作しますが、
repeat〜loopまでの間ではstopを使わないでbreakを使った方が良いような気がします。
また、a.cnt++をしていない時もobjprmを使っているので、直すと

(前略) *iti repeat 3 if stat=stano.cnt { a.cnt++ if a.cnt\2==1 : objprm stat,"○" if a.cnt\2==0 : objprm stat,"×" break } loop stop *ni repeat 3 if stat=stano2nd.cnt { b.cnt++ if b.cnt\2==1 : objprm stat,"○" if b.cnt\2==0 : objprm stat,"×" break } loop stop
こうなります。
ただ、複数設置するのなら一つのラベル、一つの配列にした方が簡潔にできるのでは?

ox = "○", "×" repeat 3 pos 125,80+25*cnt button "×", *iti a(stat) = 1 pos 195,80+25*cnt button "×", *iti a(stat) = 1 loop stop *iti a(stat) ^= 1// a(stat) = 1 - a(stat)と同じ動作 objprm stat, ox(a(stat)) stop
こんな感じで



悩み中の人

リンク

2011/2/12(Sat) 16:47:05|NO.37039

なるほど!命令の条件分岐が、目的通りに整頓されていなかったわけですね。
非常に有用な助言を、ありがとうございました!
さらに簡潔な具体例もいただいて、勉強になりました。
これでようやく、先に進めます。



悩み中の人

リンク

2011/2/12(Sat) 16:47:42|NO.37040

解決のチェックを忘れておりました。たびたび失礼しました。



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