2017-02-28 9 views
-1

ユーザーが描いたパスと、任意の時点での速度を保存する必要があります。基本的に、線の描画方法を記録します。その後、図面(パスと速度)を操作/編集できる必要があります。このようなだけでなく、スピード/速度情報とユーザーの描画をjavascriptで保存する

何か:

http://paperjs.org/examples/path-simplification

私はスピードを保存すべきか疑問?たとえば、ポインターの場所を1秒間に10回保存するよりも良い方法はありますか?

答えて

1

独自のカスタムメイドのオブジェクトに格納することができます。それがクリックされています後にすべてのmousemoveイベントをリッスンするイベントリスナーを行います

var pointArray = []; 

onMouseMove(event){ 
    var pointData = { 
     x: event.screenX, 
     y: event.screenY, 
     time: Date.now() 
    } 

    pointArray.push(pointData); 
} 

今、あなたは位置&時間情報の完全な長いpointArrayを持っています!ちなみに、1秒間に10回データを保存する必要はありません。なぜなら、マウスが動いていないと冗長な情報しか得られないからです。単にmousemoveを聞くだけの方がいいです。

+0

意味があります。私はこれについて考えます。 – AxlSmith

+1

すべてのマウスイベントに高解像度のタイムスタンプがある場合、Dateオブジェクトを使用する理由。 'event.timeStamp'ミリ秒単位で正確に1マイクロ秒 – Blindman67

+0

FFoxであなたのメソッドをテストしたところ、値が変更される前に' 18446744072697221000'と読み込まれた 'console.logs'が124個ありました。 'Date.now()'はより良い結果を出します。 – Marquizzo

0

任意の行は、ポイントの数で表すことができます。各ポイントのタイムスタンプを保存すると、ライン上の任意の2点間の平均速度を推測できます。

Paper.js上記でリンクしたように、JSのパスを表す興味深い例です。 Javascriptでパスを作成して表現するために既存のライブラリを調べることをお勧めします。長期的に見ると、機能のために独自のライブラリを作成するのに比べて時間が節約できます。

関連するスタックオーバーフローJavascript図面ライブラリの相違点について回答してください。

+0

タイムスタンプは良いアイデアです!私は平均速度が十分ではないので恐らくうまくいかないかもしれません。とにかく私はそのアプローチをさらに調査します... – AxlSmith

関連する問題