|
|
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さ」も無事押すことが
出来るようにならないでしょうか。
お願いします。
|
|
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を通らなくなってしまっていたからです。
|
|
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を通ってないのは確かだが、
無限ループの原因としては的外れだ。
|
|
2008/8/18(Mon) 23:03:49|NO.18416
ありがとうございます。
|
|
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
オブジェクトの状態をチェックして、リアルタイムに反映するのであれば、
ループ内でチェックした方が早いかと思われますが。
|
|
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
|
|
2008/8/18(Mon) 23:58:52|NO.18421
ありがとうございます^^
参考にさせていただきます^^
|
|
2008/8/21(Thu) 22:43:16|NO.18605
解決です^^
ありがとうございました。
|
|