- - PR -
位置からミリ秒、ミリ秒から位置の求め方を教えてください。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-08 17:15
曲を再生し、その曲が始まると四角いイメージがパネルの左端から右端まで動かしたいのです。
どの曲を再生しても曲の終わりにピッタリとパネルの右端にイメージが到着するようにしたいのです。 例えば、2秒の曲なら2秒後にイメージが右端に到着し、一時間の曲なら一時間後にイメージが右端に到着する。 それに伴ってイメージの位置からミリ秒を算出する関数とミリ秒からイメージの位置を算出する関数の二つの関数を作りたいのです。 イメージの位置からミリ秒を算出するのは多分下記で良いと思うのですが、 ミリ秒からイメージの位置を算出する数式がわかりません。 下記はわかっていてグローバルで定義している変数です。 ・intSongLength = 再生している曲の長さ(ミリ秒)、再生する曲が変わる度に長さは変わります。 ・intPanelWidth = 絵の動く距離、固定です。 //位置からその時間を算出する public int getTimeFromPos(int X){ return X * (intSongLength / intPanelWidth); } //時間から位置を算出する public int getPosFromTime(int time) { } | ||||
|
投稿日時: 2003-09-08 17:24
私はこの処理について何も知りませんがgetTimeFromPostがただしいなら return time * (intPanelWidth / intSongLength); かな | ||||
|
投稿日時: 2003-09-08 17:41
お答えありがとうございました。
Jun様の式だと必ず0になってしまいませんか? 例えば time = 1000ミリ秒 intPanelWidth = 100 intSongLength = 50000ミリ秒 1000 * (100 / 50000) = 0.2 戻り値がintですので戻りは0です。 いかがでしょうか? | ||||
|
投稿日時: 2003-09-08 18:02
| ||||
|
投稿日時: 2003-09-08 18:05
それは距離の単位が変わればどうにでもなることのような気がします 0にしたくないなら 計算時に分子に分母-1を足せばよいし 四捨五入したければ分母/2を足せばよいことでは それは別のほうの式でも同じと思います | ||||
|
投稿日時: 2003-09-08 18:41
return (int)(time * ((double)intPanelWidth / (double)intSongLength));
か return (time * intPanelWidth) / intSongLength; でよいと思います。 | ||||
|
投稿日時: 2003-09-08 18:44
そういえばそうでした.括弧を間違ってましたね | ||||
|
投稿日時: 2003-09-08 19:20
Wata様、Jun様ありがとうございました。
>return (int)(time * ((double)intPanelWidth / (double)intSongLength)); で問題ありませんでした。 | ||||
1
