スクリーンセーバで、マウスが動いたら停止させたいたい
koya 2013/7/22(Mon) 13:57:12|NO.55808
HSPでウインドウのみのスクリーンセーバーをつくっているのですが、
マウスが動いたらやめるという処置がわかりません。
スクリプト
a = "ここに出したい文字を入力してね"
input a,150:mes "出したい文字"
input b,30:mes "秒後"
button "実行",*start
stop
*start
await b*1000
cls
color 0,0,255:boxf
repeat
pos rnd(600),rnd(500)
color 255,255,0:mes a
await 30
loop
stop //ここでマウスを動かしたら,*ugokasitaにジャンプするようにしたい
*ugokasita
お願いします
(’’ 2013/7/22(Mon) 14:03:09|NO.55809
#packopt type 2
を上に追加して
スプリクトエディタでCtlr+F9
(’’ 2013/7/22(Mon) 14:09:06|NO.55810
それか下のようにするか
スクリーンセーバーを作りたいなら上のようにして正式な拡張子SCRファイルを作るほうがいい
#define WM_MOUSEMOVE 0x0200
oncmd goto *onmousemove,WM_MOUSEMOVE
stop
*onmousemove
end
(’’ 2013/7/22(Mon) 14:11:33|NO.55811
連投すいません…
あと、koyaさんのbuttonの書き方はおかしいので覚えてしまう前に直しましょう
kanahiron 2013/7/22(Mon) 14:25:01|NO.55813
質問と関係ありません ごめんなさい
>あと、koyaさんのbuttonの書き方はおかしいので覚えてしまう前に直しましょう
button "実行",*start
のなにがおかしいのですか?
HDLには
button gotoと記述した場合は、ラベルにジャンプ。
button gosubと記述した場合は、 ラベルにサブルーチンジャンプを行ないます。
goto、gosubキーワードを省略した場合には、gotoと同じ動作になります。
と書いてあります goto / gosubの省略をおかしいと言ってるのはおかしいです
(’’ 2013/7/22(Mon) 14:29:32|NO.55814
え、省略できたんですか・・・
変なことを言ってすみません・・・
koya 2013/7/22(Mon) 14:32:34|NO.55815
本物スクリーンセーバーではなくてウインドウ内のスクリーンセバーです
それとスクリプト間違えました
*main
a = "ここに出したい文字を入力してね"
input a,150:mes "出したい文字"
input b,30:mes "秒後"
button "実行",*start
stop
*start
await b*1000
cls
color 0,0,255:boxf
repeat
pos rnd(600),rnd(500)
color 255,255,0:mes a
await 30
loop
stop //ここでマウスを動かしたら,*mainにジャンプするようにしたい
※buttonについて
デモについている HSP入門では、
button "PUSH", *hata1
| | |
命令 パラメータ1 パラメータ2
と書いており、
ドキュメントライブラリには、
button goto/gosub "name",*label
"name" : ボタンの名前
*label : 押した時にジャンプするラベル名
と書いてありました。
KA 2013/7/22(Mon) 14:58:18|NO.55817
キー入力で抜ける方法を考えれば、マウスもそんなに難しくは無いでしょう。
名無し 2013/7/22(Mon) 16:04:48|NO.55821
ヒントだけ。
mousex
mousey
ginfo(0)
ginfo(1)
ZAP 2013/7/22(Mon) 19:13:32|NO.55825
まず、koyaさんのスクリプトでは、最後のstopのところには永遠に処理がいくことはない、
というのは理解されてますか?
123 2013/7/23(Tue) 00:55:55|NO.55831
ソースよく見てないけど
スクリーンセーバー開始する前にマウスの位置を記憶して
開始後にループでマウスの位置を監視するんだよ
123 2013/7/23(Tue) 01:10:49|NO.55832
開始前
maenoitix = mousex
maenoitiy = mousey
開始後
repeat
if maenoitix != mousex || maenoitiy != mousey {
break
}
await
loop
↓
やめる処理
こんなかんじ
123 2013/7/23(Tue) 11:40:10|NO.55833
あと、よく見たら
>>input b
の部分?全角文字の数字入れると0になるから
その処理も必要かもね。
きのよー 2013/7/25(Thu) 12:35:08|NO.55914
if mousex!mstock(0) or mousey!mstock(1):break
mstock=mousex,mousey
repeat 〜 loopの間に突っ込めばマウス動かした瞬間にループから出てくるよ。repeatの前にmstockの設定も必要だけど。
koya 2013/7/29(Mon) 12:04:47|NO.55957
ありがとうございます