2015-09-09 2 views
2

У меня есть приложение, разработанное с помощью phonegap, и я тестирую поддержку касания для fabricJS, но почему-то это не работает для меня.Как получить fabricJS для работы с событиями касания?

Я пробовал создать пользовательскую версию here, но это не сработает.

У меня есть this jsfiddle, где я использовал другую версию под названием fabric_events.js, но она тоже не работает. (Кстати, как вы загружаете свою версию на jsfiddle?)

поэтому я попробовал FabricJS touch events demo, и он работает!

С тех пор как демо работало, я попытался загрузить свою собственную версию с http://fabricjs.com/lib/fabric_with_gestures.js, но все равно не повезло.

это мой код:

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="initial-scale=1, width=device-width, user-scalable=true" /> 
    <script src="js/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="js/fabric_with_gestures.js"></script> 
    <script type="text/javascript" > 


     $(document).ready 

     (
      function() { 

       var canvas = new fabric.Canvas('c'); 


       // Do some initializing stuff 
       fabric.Object.prototype.set({ 
        transparentCorners: false, 
        cornerColor: 'rgba(102,153,255,0.5)', 
        cornerSize: 12, 
        padding: 5 
       }); 

       alert('fabric.isTouchSupported=' + fabric.isTouchSupported); 
       var info = document.getElementById('info'); 
       canvas.on({ 
        'touch:gesture': function() { 
         var text = document.createTextNode(' Gesture '); 
         info.insertBefore(text, info.firstChild); 
        }, 
        'touch:drag': function() { 
         var text = document.createTextNode(' Dragging '); 
         info.insertBefore(text, info.firstChild); 
        }, 
        'touch:orientation': function() { 
         var text = document.createTextNode(' Orientation '); 
         info.insertBefore(text, info.firstChild); 
        }, 
        'touch:shake': function() { 
         var text = document.createTextNode(' Shaking '); 
         info.insertBefore(text, info.firstChild); 
        }, 
        'touch:longpress': function() { 
         var text = document.createTextNode(' Longpress '); 
         info.insertBefore(text, info.firstChild); 
        } 
       }); 


       fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function (img) { 
        img.scale(0.5).set({ 
         left: 150, 
         top: 150, 
         angle: -15 
        }); 
        canvas.add(img); 
       }); 

       canvas.add(new fabric.Rect({ 
        left: 50, 
        top: 50, 
        fill: '#269926', 
        width: 100, 
        height: 100, 
        originX: 'left', 
        originY: 'top', 
        hasControls: true, 
        hasBorders: true, 
        selectable: true 
       })); 

       var obj = new fabric.Rect({ 
        left: 20, 
        top: 20, 
        fill: '#555555', 
        width: 100, 
        height: 100, 
        originX: 'left', 
        originY: 'top', 
        hasControls: true, 
        hasBorders: true, 
        selectable: true 
       }); 
       canvas.add(obj).renderAll(); 
       canvas.setActiveObject(obj) 
       //canvas.sendToBack(obj) 
      } 

     ); 
    </script> 
    <title></title> 
    <style> 
     canvas { 
    border: 1px solid #999; 
} 

    </style> 
</head> 
<body> 
    <canvas id="c" width="200" height="200" style='z-index:-1'></canvas> 
    <p id='info' style='background: #eef; width: 583px; padding: 10px; overflow: scroll; height: 80px'></p> 
</body> 
</html> 

ответ

1

Извините за поздний ответ. Я работаю с Fabric.js на данный момент, и у меня нет никаких проблем с жестами. Я пробовал ваш код, он обычно работает, если вы заботитесь о трех вещах:

1.) Очень важно: пожалуйста, удалите style='z-index:-1' с самого холста. Свойство z-index указывает порядок стека элемента, а отрицательное число не позволит вам взаимодействовать с холстом в вашем примере. Дополнительная информация: CSS z-index Property.
2.) Вы уверены, что создали пользовательскую сборку с «Взаимодействие» и «Жесты»? «Жесты» зависят от «Взаимодействия». Если вы не уверены, создайте пользовательскую сборку со всеми модулями, кроме «Узла» (если вы не захотите позже использовать Node.js).
3.) Fabric.js и jQuery должны находиться в подпапке 'js' относительно вашего кода. Но я думаю, что это уже так.

Тогда это должно сработать и для вас.

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