2014-09-01 5 views
0

Пытаясь использовать binb hammerJs в моем текущем кодексе kineticJs 5.1, нашли подсказки, но мои кусочки головоломки вообще не вращаются, а мои куски кинетической формы, почему?kineticJs shape with hammerjs multitouch rotation

  var startRotate = 0; 
      var hammertime = Hammer(piecesArray[i][j].shape); 
      hammertime.on("transformstart", function(e) { 
      startRotate = piecesArray[i][j].shape.rotation(); 
      }).on("transformstart", function(e) { 
       piecesArray[i][j].shape.rotation(startRotate + e.gesture.rotation); 
       layer.draw(); 
      }); 

моя скрипка: http://jsfiddle.net/e70n2693/20/

ответ

0

Этот пример для KineticJS v5.1.0 и v1.0.7 HammerJS

Вы должны применить Hammer экземпляр на Kinetic.Node экземпляра, а не на Image объекта.

var hammertime = Hammer(piecesArray[i][j].shape); 
hammertime.on("transformstart", function(e) { 
    this.startRatation = this.rotation(); 
}).on("transform", function(e) { 
    this.rotation((this.startRatation || 0) + e.gesture.rotation); 
    this.getLayer().draw(); 
}); 

http://jsfiddle.net/e70n2693/30/

Примечание: Я считаю, что лучше установить другой center для формы с помощью offset.

+0

Спасибо спасибо :) что вы подразумеваете под другим центром смещения? я могу установить 2 раза смещения? – user3709279

+0

В моем примере http://jsfiddle.net/e70n2693/30/ фигуры повернуты относительно одного из ребер, я думаю, что лучше повернуть вокруг центра. Самый простой способ - конфигурировать свойство 'offset'. – lavrton

+0

В настоящее время я добавил изображение предварительного просмотра внутри своего кода, теперь могу повернуть свою головоломку, но проблема в том, что чувствительность изображения предварительного просмотра слишком чувствительна, есть способ решить это? здесь jsfiddle: http://jsfiddle.net/e70n2693/34/ – user3709279

0

использовать последнюю версию hammer.js v2.0.

Проверьте getting started guide. «Пинч и поворот жесты по умолчанию отключены, включите его»

hammertime.get('pinch').set({ enable: true }); 
hammertime.get('rotate').set({ enable: true }); 

Вот обновленный jsfiddle . Я не мог проверить его, хотя, я не могу сделать поворот жест, надеюсь, что он работает.

Edit:

Проблема заключается в том, Hammer(imageObj, options); апи ожидает imageObj быть HTML элемент, в вашем случае это кинетическая форма. Я не знаю, можете ли вы получить элементы html для каждой кинетической фигуры. Если нет, вы можете слушать вращение на элементе .kinetic-container canvas. Таким образом, жест вращения выполняется на всем холсте, и вам нужно отслеживать последнюю затронутую кинетическую форму, чтобы вы могли повернуть ее.

Я установил refactored jsfiddle, показывая идеи, о которых я упомянул, однако мне не удалось повернуть фигуру с помощью кинетики, я надеюсь, что это исправит вашу проблему, снова я не смог проверить ее на rotate, но это работает на tap.

+0

Нет, это не работает, никаких других идей? На самом деле, мне не нужен пинч. спасибо :) – user3709279

+0

@ пользователь3709279 смотреть мой редактирование пожалуйста. – user3995789

+0

извините, я попробовал, и он не работает на вращение тоже, и я не знаю, что еще я могу сделать, и что вы подразумеваете под этим работает для крана? спасибо :) – user3709279

Смежные вопросы