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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0817
asdfループの回数取得8解決


asdf

リンク

2008/8/17(Sun) 22:07:26|NO.18383

質問です。
例えば、


screen 0,650,450,4+8+16 objsize 200,25 pos 0,0:chkbox "あsdふぁsdf",chk1 pos 0,26:chkbox "fdさfdさ",chk2 *main if chk1=1 :goto *lchk1 if chk2=1 :goto *lchk2 await 50:goto*main *lchk1 mes"あsdふぁsdf" goto*main *lchk2 mes"fdさfdさ" goto*main

というスクリプトがあったとして、

これは仮に「あsdふぁsdf」のチェックボックスを選択してしまうと、
無限ループが起きて「あsdふぁsdf」が大量に表示させられてしまい、
「fdさfdさ」のチェックボックスを押す余裕もなくなってしまいますよね?


これをどうにかして、正常に・・・つまり

チェックボックス「あsdふぁsdf」を押しても、文字「あsdふぁsdf」は
一つしか表示させられず、チェックボックス「fdさfdさ」も無事押すことが
出来るようにならないでしょうか。

お願いします。



この記事に返信する


Quiet

リンク

2008/8/17(Sun) 22:22:42|NO.18388

こういう事で宜しいんじゃ無いかと。

screen 0,650,450,4+8+16 objsize 200,25 pos 0,0:chkbox "あsdふぁsdf",chk1 pos 0,26:chkbox "fdさfdさ",chk2 pos 0,50 *main if chk1=1 :chk1=2 :gosub *lchk1 if chk2=1 :chk2=2 :gosub *lchk2 await 50 goto *main *lchk1 mes"あsdふぁsdf" return *lchk2 mes"fdさfdさ" return
無限ループが起きたのはチェック直後にwaitを通らなくなってしまっていたからです。



Gugurecus

リンク

2008/8/18(Mon) 05:34:54|NO.18395

極力元のスクリプトをいじらないなら

screen 0,650,450,4+8+16 objsize 200,25 pos 0,0:chkbox "あsdふぁsdf",chk1 pos 0,26:chkbox "fdさfdさ",chk2 *main if chk1=1 :goto *lchk1 if chk2=1 :goto *lchk2 await 50:goto*main *lchk1 mes"あsdふぁsdf" chk1=2 goto*main *lchk2 mes"fdさfdさ" chk2=2 goto*main
とすればいいかと。

無限ループの原因はchk1=1のまま*mainに戻ってきてるから。
Quietさんがいってるとおりチャック後にawaitを通ってないのは確かだが、
無限ループの原因としては的外れだ。



asdf

リンク

2008/8/18(Mon) 23:03:49|NO.18416

ありがとうございます。



asdf

リンク

2008/8/18(Mon) 23:21:39|NO.18417

では・・・チェックをはずしたときにチェックを入れる前の状態・・・つまり、
文字を消すことは可能でしょうか?



高頻度通りすがり

リンク

2008/8/18(Mon) 23:42:18|NO.18419

これでどうです?


screen 0,650,450,4+8+16 objsize 200,25 pos 0,0:chkbox "あsdふぁsdf",chk1 pos 0,26:chkbox "fdさfdさ",chk2 pos 0,50 cy=ginfo_cy *main redraw 0 color 255,255,255 : boxf color 0,0,0 if chk1=1 : pos 0,cy : mes "あsdふぁsdf" if chk2=1 : pos 0,cy+16 : mes "fdさfdさ" redraw 1 await 50 goto *main

オブジェクトの状態をチェックして、リアルタイムに反映するのであれば、
ループ内でチェックした方が早いかと思われますが。



Quiet

リンク

2008/8/18(Mon) 23:50:01|NO.18420

文字を消すならそれなりの処理をしましょう。

screen 0,650,450,4+8+16 objsize 200,25 pos 0,0:chkbox "あsdふぁsdf",chk1 pos 0,26:chkbox "fdさfdさ",chk2 *main redraw 0 color 255,255,255:boxf color 0,0,0 pos 0,50 if chk1=1 :gosub *lchk1 if chk2=1 :gosub *lchk2 redraw 1 await 50 goto*main *lchk1 mes"あsdふぁsdf" return *lchk2 mes"fdさfdさ" return



asdf

リンク

2008/8/18(Mon) 23:58:52|NO.18421

ありがとうございます^^
参考にさせていただきます^^



asdf

リンク

2008/8/21(Thu) 22:43:16|NO.18605

解決です^^
ありがとうございました。



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