我有一个Fabric.js画布,我想实现软件包通常使用“手工”工具进行的全画布平移。这是当你按下一个鼠标按钮,然后移动到画布上,同时按住鼠标按钮,画布的可见部分也相应地发生了变化。
你可以看到在这个视频里我想要达到的目标。
为了实现这个功能,我编写了以下代码:
$(canvas.wrapperEl).on('mousemove', function(evt) {
if (evt.button == 2) { // 2 is the right mouse button
canvas.absolutePan({
x: evt.clientX,
y: evt.clientY
});
}
});
但不起作用。您可以看到在这个视频里发生了什么。
如何按照以下顺序修改代码:
发布于 2015-12-26 12:55:40
我在jsfiddle上做了一个例子,我们实际上可以将整个画布和它的所有对象拖到父div中,就像图片一样,我将尝试一步一步地解释它。
canvas.defaultCursor = 'url(" http://maps.gstatic.com/intl/en_us/mapfiles/openhand_8_8.cur") 15 15, crosshair';
c.重写__onMouseDown函数,以更改关闭的游标(末尾)。
fabric.Canvas.prototype.__onMouseDown =函数(E){ //只接受左击变量isLeftClick =‘哪’?e.which === 1: e.button === 1;if (!isLeftClick && !fabric.isTouchSupported) {返回;} if (this.isDrawingMode) { this._onMouseDownInDrawingMode(e);} //忽略,如果此时正在转换某个对象,如果(this._currentTransform) {返回;} var ==== this.findTarget(e),指针= this.getPointer(e,true);//保存指针以检查__onMouseUp事件this._previousPointer =指针;var shouldRender =this._shouldRender(目标、指针),shouldGroup = this._shouldGroup(e,目标);if (this._shouldClearSelection(e,目标)){ this._clearSelection(e,目标,指针);} if (shouldGroup) { this._handleGrouping(e,目标);shouldGroup= this.getActiveGroup();} if (target & target.selectable &shouldGroup){ this._beforeTransform(e,target);this._setupCurrentTransform(e,target);} //我们必须将活动图像放置在顶层画布shouldRender & this.renderAll();this.fire(‘鼠标:向下’,{塔吉特:目标,e: e });塔吉特&target.fire(鼠标向下,{ e: e });如果(!canvas.getActiveObject()\x{canvas.getActiveGroup()){ flag=true;//将光标更改为closedhand.cur canvas.defaultCursor = 'url("8.cur“) 15,十字头发‘;}//如果弹琴示例:https://jsfiddle.net/tornado1979/up48rxLs/
你可能比我更幸运,在你的浏览器,但它肯定会在你的现场应用程序工作。
不管怎样,我希望能帮上忙,祝你好运。
https://stackoverflow.com/questions/34423822
复制相似问题