gpt4 book ai didi

javascript - 如何让 fabricJS 处理触摸事件?

转载 作者:行者123 更新时间:2023-11-30 00:23:04 27 4
gpt4 key购买 nike

我有一个使用 phonegap 开发的应用程序,我正在测试 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>

最佳答案

抱歉回答晚了。我目前正在使用 Fabric.js,我对手势没有任何问题。我已经尝试过您的代码,如果您关心三件事,它通常可以正常工作:

1.) 非常重要:请从 Canvas 本身中删除 style='z-index:-1'。 z-index 属性指定元素的堆叠顺序,负数将不允许您与示例中的 Canvas 进行交互。更多信息:CSS z-index Property .
2.) 你确定你已经创建了一个带有“交互”和“手势”的自定义构建吗? “手势”依赖于“交互”。如果您不确定,请使用除“Node”之外的所有模块创建一个自定义构建(除非您以后想使用 Node.js)。
3.) Fabric.js 和 jQuery 必须位于与您的代码相关的子文件夹“js”中。但我认为它已经是那样了。

那么它也应该对你有用。

关于javascript - 如何让 fabricJS 处理触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com