hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/マウス追跡 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

マウス追跡

ツールチップのようなもの

マウスの位置を基点にして常にマウスのそばから離れない、 というようなものを考えてみました。

filemouse_track.as
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    screen 640,480,4
    title "マウス追跡"
    mes "■"
    ginfo 7
    cls
 
*mouse_track
    repeat
        await 1
        px=nx :py = ny
        if mousex+prmx>winx : nx = winx-prmx : else nx = mousex
        if mousey+prmy>winy : ny = winy-prmy : else ny = mousey
        if (nx=px)&(ny=py) : continue
        color 255,255,255
        boxf px,py,px+prmx,py+prmy
        color 0,0,0
        pos nx,ny : mes "■"
    loop
    stop
3〜5行目は初期化です。
画像の変わりに描画した■の大きさを取得し、画面をクリアします。
10〜13行目は座標の更新です。
マウスの座標を保存し(PrevX,PrevY)、新しいマウスの座標を設定します(NextX,NextY)。
13行目でマウスの座標が変わっていない場合に無駄な描画を避けるためにループ先頭に戻ります。
14〜17行目が描画処理です。
以前の座標の■を消してから、新しい位置に■を描画します。

[hsp3]

+  マウス追跡

マウスを非表示にすればオリジナルのカーソルとしての動作も可能だと思っています。
またドローイングも同じ原理で表現可能だと思っています。


  • HSP入門書・サイトにも載ってるのかな^^; -- kz3 2005-05-23 14:58:13 (月)
  • 早速のご利用どうもですw この機会に利用者増えるといいんですけどね。 -- Charlotte 2005-05-23 22:17:52 (月)
  • いい感じです。すごくw -- Charlotte 2005-05-23 22:32:15 (月)
    • 質問いいですかね。repeatの時のawaitって上にあるのと下にあるのとどっちがいいんでしょう? -- Charlotte 2005-05-23 22:34:35 (月)
  • 遅ればせながら間違い等ありましたら指摘・訂正お願いします。m_ _m -- kz3 2005-05-24 09:29:30 (火)
  • ツールチップはマウスが止まると出てきて、動くと消えるのでちょっと違う感じがします。mouseでカーソル消して簡易オリジナルカーソルがよさそう。 -- GENKI? 2005-09-11 03:20:53 (日)
  • ここのスクリプトにredrawを付け足そうとして書き直してるうちに別のものが出来ちまいましたorz→ペイント -- GENKI? 2005-09-11 04:14:39 (日)
  • 今さっき調べてみてはじめて知りました。tooltipなんて便利なものがあったのね…。 -- GENKI? 2005-09-11 04:27:20 (日)

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

質問応答

ループ内で使用するwait/awaitはループ先頭と後ろのどちらが良い?

処理内容が大事?
作者の好みの場合と、上と下とで動作に若干影響する場合とがあると思っています。
今回は後者で■を描画する前に最新のマウスの座標を取得(mousex,mouseyの更新)するためにawaitを先に持ってきました。 -- kz3 2005-05-24 08:57:44 (火)
continueを使う時は!
continueを使う時はwait/awaitを先に持ってこないと、repeat〜continue間で「タスクが回らない」(←理解が乏しいです)という状態になるかも知れません。--kz3 2005-05-24 09:28:42 (火)

添付ファイル:
filemouse_track.as
549件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-05-26 (日) 10:37:21 (196d)