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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0626
レヴィンシークバーの動作を改善したい4解決


レヴィン

リンク

2008/6/26(Thu) 10:31:02|NO.17021

HSPでシークバーを作るとき、トラックバーを使って代用しているのですが、
これの動作がいまいち納得いきません。
というのも、適当な位置をクリックするとそこには飛ばず、
変なところへ飛んでいってしまうことがあるからです。
また同じところを何回もクリックすると、全然関係のないところへ
飛んでしまいます。

プレイヤーソフトではクリックしたところにきちんと移動します。
これを実装したいのですが、いい方法はないでしょうか?

一応以下のようにして設置しています。
※llmod3が必要です。HSPにllmod3がデフォルトで同梱されているバージョンのものを
 使うことをお勧めします。

#include "llmod3/llmod3.hsp" ;この辺のパスは環境に合わせて変更して下さい #include "llmod3/trackbox.hsp" ;再生位置のトラックバーを設置 pos 0,0:objsize 400,20,20 trackbox WindowWidth,30,8|$10



この記事に返信する


knock2

リンク

2008/6/26(Thu) 12:59:20|NO.17023

トラックバー上でクリックするとダメですが
トラックバーの下をクリックすれば無理やりですがそれらしく・・・


#define trackbar(%1,%2,%3=50) winobj "msctls_trackbar32", "", , $50000000 | $1, %1, %2:\ hndTrkbar = objinfo (stat, 2):sendmsg hndTrkbar, $405, 1,%3 onclick *jump objx=400:objy=20 objsize objx,objy,20 trackbar objx,objy,50 stop *jump mx=mousex;トラックバーの設置場所によって補正必要 bar=100*mx/objx sendmsg hndTrkbar, $405, 1,bar



ぽこみち

リンク

2008/6/27(Fri) 00:10:15|NO.17028

始めたばかりで、初心者の域を脱していない素人考えで、恐らくイレギュラーかもしれませんが...
knock2さんのを参考にしました。
環境によりID0のチックマーク位置が違うかもしれません。この辺はちょっと分かりません。

winobj "msctls_trackbar32","",,$50000000,500,30 hTrackbar = objinfo(stat, 2) sendmsg hTrackbar, $405, 1, 50 sendmsg hTrackbar, $415, 0,0;クリックの瞬間、移動させない為ページサイズを0にする oncmd gosub *hscroll, $114 stop *hscroll if lparam = hTrackbar { mx=ginfo_mx-ginfo_wx1-15;チックマークのスタート位置(15px) bar=100*mx/470;スタート、エンドのチックマークの間隔(470px) sendmsg hTrackbar, $405, 1, bar } return



knock2

リンク

2008/6/27(Fri) 12:09:26|NO.17030

あっそうか、oncmd でしたね。
ぽこみちさんのほうがいいですね。



レヴィン

リンク

2008/6/30(Mon) 10:38:25|NO.17088

お二人とも回答ありがとうございます。
かなり正確に操作できるようになりました。

>>環境によりID0のチックマーク位置が違うかもしれません。
これはpgetあたりを使って、色が変わっている位置を調べて
計算すればなんとかなると思います。

これにて解決とします。



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