スクリーンセーバで、マウスが動いたら停止させたいたい

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

ありがとうございます