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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0722
koyaスクリーンセーバで、マウスが動いたら停止させたいたい14解決


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

ありがとうございます



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