2011-12-21 4 views
0

私はHTML5アプリケーションを開発していますが、デスクトップとモバイルプラットフォームの両方に適したキャンバス要素の入力を処理するJSライブラリを探しています(そうでなければ、HTML5のポイントは何ですか? )キャンバスイベントライブラリを探しています本当にクロスプラットフォーム

基本的には、ドローイングのようなアプリケーションなので、ドラッグする必要があります。ドラッグはキャンバス内を移動するためにも使用されます(これはモバイルフレンドリで、スクロールバーはありません)。私がkinetic.jsと同様のを知っている

すぎ、ズームピンチをサポートする場合、それはいいだろうが、彼らは

+1

[fabric.js](http://kangax.github.com/fabric.js) – kangax

+0

どのような素晴らしいソフトウェアですか? – Raffaele

答えて

1

キャンバスの要素を持っていないモバイルおよびデスクトップ用に別のライブラリを持っているようだ、またサークルを行いますたとえば、キャンバス上に描かれたイベントは、それに付随しています。これは、DOMでの作業とはまったく異なります。

キャンバスに描画する各「要素」のx/y位置を追跡する必要があります。マウスまたはタッチイベントが発生した場合は、そのイベントのx/y位置を取得し、あなたのキャンバス '要素'のx/yの位置に合わせてください。

しかし、入力のx/y位置(マウス/タッチ)がx/y座標と正確に一致する必要がないように、基本的な衝突検出も少し必要です。あなたのキャンバス '要素'のyの位置。

タッチイベントがサポートされているモバイルデバイスを使用している場合、Kineticを使用すると、「mousedown」、「mouseup」、「click」などのイベントを簡単に検出できます。

var _START, _MOVE, _END; 
if('ontouchstart' in window) { 
    _START = 'touchstart'; 
    _MOVE = 'touchmove'; 
    _END = 'touchend'; 
} 
else { 
    _START = 'mousedown'; 
    _MOVE = 'mousemove'; 
    _END = 'mouseup';   
} 

...キネティックのaddEventListener関数で_START/_MOVE/_ENDを使用してください。

多少役に立ったと思っています。もちろん、グローバル変数の設定には注意が必要ですが、一般的には悪い方法ですが、これは一例に過ぎません。

キネティックはhereであり、タッチイベントとジェスチャーイベント(ピンチ/ズームのジェスチャー)の書き込みが良好ですhere

+0

提案していただきありがとうございます。あなた自身が言ったように、それはちょっとしたハックなので、誰かがより良い方法を知っているのを待ってみましょう:) – Raffaele

+0

probsはありません。何らかの助けになるかもしれないKinetic.jsのタッチイベントを使用している[this](http://www.html5canvastutorials.com/advanced/html5-canvas-mobile-events/)の例が見つかりました。 私は急いで答えを出すが、私はKineticのソース(実際には愚かな)をハックする必要はないことに気付かなかった。上記のタッチデバイス検出を使用して、_START/_MOVE/_ENDをKineticのaddEventListener関数に渡すことができます。私は元の答えにも変更を加えます。 – SquareFeet

関連する問題