|
|
2011/5/6(Fri) 20:05:13|NO.39005
またまた質問して申し訳ありません
HSPが詳しいらしい友人に聞いても俺にも無理と言われて困っています・・・
buffer 2
font "メイリオ",50
print "ON"
print "OFF"
x = ginfo_mesx
y = ginfo_mesy
gsel 0
MesNo = 0
pos 0,0 :button"BUTTON",*label1
pos 100,100 :button"BUTTON",*label12
*label1
pos 30,30
gcopy 2,0,MesNo * y,x,y
MesNo = ( 1 + MesNo ) \ 2
*label12
pos 300,300
gcopy 2,0,MesNo * y,x,y
MesNo = ( 1 + MesNo ) \ 2
何回か、両方のボタンをクリックして頂けると分かると思いますが、1回目にボタンを押しても反応しない時があります
そもそもHSPじゃ無理なのでしょうか?ヒントなどを頂けると光栄です><
|
|
2011/5/6(Fri) 20:35:16|NO.39006
各ラベルの前にstopが無いので一気に処理しています。
また、オン・オフの状態を保持している変数を共用してしまっているので別に用意します。
buffer 2
font "メイリオ",50
print "ON"
print "OFF"
x = ginfo_mesx
y = ginfo_mesy
gsel 0
MesNo = 0
MesNo2 = 0 //2つ目のON/OFF状態を保管する変数を追加
pos 0,0 :button"BUTTON1",*label1
pos 100,100 :button"BUTTON2",*label12
stop //stopを追加。ボタンを押さないときは文字を表示させない。
*label1
pos 30,30
gcopy 2,0,MesNo * y,x,y
MesNo = ( 1 + MesNo ) \ 2
stop //stopを追加。ボタン1を押したときに*label12まで処理しないようにする。
*label12
pos 300,300
gcopy 2,0,MesNo2 * y,x,y //MesNo2を使ってON/OFF切り替え。
MesNo2 = ( 1 + MesNo2 ) \ 2 //MesNo2を使ってON/OFF切り替え。
stop //stopを追加。将来追加されたスクリプトまで実行しないように。
|
|
2011/5/6(Fri) 20:42:22|NO.39007
ラベルの前では止まる、という機能はHSPにはございません。
止まるべきラベルの最後ではstopを入れましょう。
それにより初めは、初期化→ボタン1処理→ボタン2処理となります。
ボタン1を押したときは、ボタン1処理→ボタン2処理となります。
ボタン2を押したときは正常ですけども。
また、それぞれのボタンのメッセージ変数が同じため、
ボタン2のメッセージがボタン1に影響されたり、逆だったりが起きてしまいます。
別の変数を使うようにしてください。
|
|
2011/5/6(Fri) 20:43:55|NO.39008
どうなるのが正解なのか詳しく書いてないので想像だが、これでいいのかな。
returnで戻れるようにしておけば、それぞれの動作を独立させることができます。
あと、管理用の変数MesNoも2つ作らないと。
buffer 2
font "メイリオ",50
print "ON"
print "OFF"
x = ginfo_mesx
y = ginfo_mesy
gsel 0
MesNo = 0
MesNo2 = 0
pos 0,0 :button gosub "BUTTON",*label1
pos 100,100 :button gosub "BUTTON",*label12
gosub *label1
gosub *label12
stop
*label1
pos 30,30
gcopy 2,0,MesNo * y,x,y
MesNo = ( 1 + MesNo ) \ 2
return
*label12
pos 300,300
gcopy 2,0,MesNo2 * y,x,y
MesNo2 = ( 1 + MesNo2 ) \ 2
return
|
|
2011/5/6(Fri) 20:46:06|NO.39009
書いてる間にかぶってしまった。orz
|
|
2011/5/7(Sat) 14:26:21|NO.39025
皆様回答スクリプトまで提供して頂きありがとうございます!!
管理用の変数があったとは・・・ふむふむ・・・とても参考になります!!
ボタンとは別にhotkey操作で文字列を操作する場合は、
(スクリプトが少々長いためアップローダーにアップロードします)
http://www1.axfc.net/uploader/Sc/so/231656
それぞれに管理用の変数を変えて指定すると正しく文字が表示されなくなったり
ボタンの場合は、ラベルを自由に指定出来る為いいのですが
このスクリプトですとラベルの指定の仕方が今一分かりません
前と同じように同じ座標に文字の置き換えをしたいと思っております
どのように改善すればいいのでしょうか?
回答よろしくお願いします
|
|
2011/5/7(Sat) 16:29:27|NO.39031
>それぞれに管理用の変数を変えて指定すると正しく文字が表示されなくなったり
*hotkey2で使う変数をMesNo2にするだけで個別に動作すると思いますが・・・
|
|
2011/5/7(Sat) 16:35:26|NO.39032
if wParam = EVENT2{
buffer 2
font "MEIRYO"
color 255,0,0:print "オンです":color 0,0,0:print "オフです"
x = ginfo_mesx:y = ginfo_mesy
gsel 0
MesNo2 = 0
*hotkey2
pos 230,35
gcopy 2,0,MesNo * y,x,y
MesNo2 = ( 1 + MesNo2 ) \ 2
}
にするとなぜか文字が停止?します
|
|
2011/5/7(Sat) 16:41:58|NO.39033
それはgcopyの行がMesNo2でなく、MesNoだからでは?
ちゃんとうpされたのを見てないので、見当違いだったらすいません。
|
|
2011/5/7(Sat) 17:10:27|NO.39034
>>Cookiesさん
それはgcopyの行がMesNo2でなく、MesNoだからでは?
二つのhotkey表示のため管理用の変数を二つ作る必要があるようでして
一応二つの変数を管理するスクリプトを書いてみます
if wParam = EVENT1{
buffer 2
font "MEIRYO"
print "オンです":print "オフです"
x = ginfo_mesx:y = ginfo_mesy
gsel 0
MesNo = 0
*hotkey1
pos 230,15
gcopy 2,0,MesNo * y,x,y
MesNo = ( 1 + MesNo1 ) \ 2
}
if wParam = EVENT2{
buffer 2
font "MEIRYO"
print "オンです":print "オフです"
x = ginfo_mesx:y = ginfo_mesy
gsel 0
MesNo2 = 0
*hotkey2
pos 230,35
gcopy 2,0,MesNo * y,x,y
MesNo2 = ( 1 + MesNo2 ) \ 2
}
return
管理用の変数を二つ作ってみたサンプルソースですがやはり文字が停止?するようです
管理用の変数を二つ作っても中々上手くいかないです;;
どのように改善すればよいのでしょうか? 回答よろしくお願いします
|
|
2011/5/7(Sat) 17:17:06|NO.39035
>>Whosさん
>>>Cookiesさん
>それはgcopyの行がMesNo2でなく、MesNoだからでは?
変数を作ったからってよいものじゃないでしょう?利用しなくっちゃ。
書きこまれたスクリプトを見る限り、
代入ばっかりして「MesNo2」は使われていないようなのですが?
あと、*hotkey1ラベルの三行目。
>MesNo = ( 1 + MesNo1 ) \ 2
唐突に「MesNo1」という名前の変数が出てきてますが、ミスとかじゃないでしょうか?
|
|
2011/5/7(Sat) 17:35:57|NO.39036
>>Cookiesさん
少々自分が勘違いしていたようで、申し訳ありません
gcopy 2,0,MesNo2 * y,x,y
MesNo2 = ( 1 + MesNo2 ) \ 2
の感じの違う変数を指定することで解決しました
皆様回答ありがとうございました!! 解決ポチッ
|
|
2011/5/7(Sat) 20:06:05|NO.39038
<h1>がんばれ</h1>
|
|