mirror of
https://github.com/konvajs/konva.git
synced 2025-11-18 17:21:36 +08:00
Added support for dragBoundFunc where custom dragbounds (or constraints) can be defines.
This commit is contained in:
19
dist/kinetic-core.js
vendored
19
dist/kinetic-core.js
vendored
@@ -3,7 +3,7 @@
|
|||||||
* http://www.kineticjs.com/
|
* http://www.kineticjs.com/
|
||||||
* Copyright 2012, Eric Rowell
|
* Copyright 2012, Eric Rowell
|
||||||
* Licensed under the MIT or GPL Version 2 licenses.
|
* Licensed under the MIT or GPL Version 2 licenses.
|
||||||
* Date: Aug 10 2012
|
* Date: Aug 13 2012
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011 - 2012 by Eric Rowell
|
* Copyright (C) 2011 - 2012 by Eric Rowell
|
||||||
*
|
*
|
||||||
@@ -2294,7 +2294,7 @@ Kinetic.Node._addGetter = function(constructor, attr) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
// add getters setters
|
// add getters setters
|
||||||
Kinetic.Node.addGettersSetters(Kinetic.Node, ['x', 'y', 'scale', 'detectionType', 'rotation', 'alpha', 'name', 'id', 'offset', 'draggable', 'dragConstraint', 'dragBounds', 'listening']);
|
Kinetic.Node.addGettersSetters(Kinetic.Node, ['x', 'y', 'scale', 'detectionType', 'rotation', 'alpha', 'name', 'id', 'offset', 'draggable', 'dragConstraint', 'dragBounds', 'dragBoundFunc', 'listening']);
|
||||||
Kinetic.Node.addSetters(Kinetic.Node, ['rotationDeg']);
|
Kinetic.Node.addSetters(Kinetic.Node, ['rotationDeg']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3509,8 +3509,9 @@ Kinetic.Stage = Kinetic.Container.extend({
|
|||||||
|
|
||||||
if(node) {
|
if(node) {
|
||||||
var pos = that.getUserPosition();
|
var pos = that.getUserPosition();
|
||||||
var dc = node.attrs.dragConstraint;
|
|
||||||
var db = node.attrs.dragBounds;
|
var db = node.attrs.dragBounds;
|
||||||
|
var dbf = node.attrs.dragBoundFunc;
|
||||||
|
var dc = node.attrs.dragConstraint;
|
||||||
var lastNodePos = {
|
var lastNodePos = {
|
||||||
x: node.attrs.x,
|
x: node.attrs.x,
|
||||||
y: node.attrs.y
|
y: node.attrs.y
|
||||||
@@ -3536,16 +3537,22 @@ Kinetic.Stage = Kinetic.Container.extend({
|
|||||||
newNodePos.y = db.bottom;
|
newNodePos.y = db.bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
node.setAbsolutePosition(newNodePos);
|
if(dbf !== undefined) {
|
||||||
|
// execute dragBoundFunc if defined
|
||||||
|
dbf(newNodePos, evt);
|
||||||
|
}
|
||||||
|
|
||||||
// constraint overrides
|
// constraint overrides
|
||||||
if(dc === 'horizontal') {
|
if(dc === 'horizontal') {
|
||||||
node.attrs.y = lastNodePos.y;
|
newNodePos.y = lastNodePos.y;
|
||||||
}
|
}
|
||||||
else if(dc === 'vertical') {
|
else if(dc === 'vertical') {
|
||||||
node.attrs.x = lastNodePos.x;
|
newNodePos.x = lastNodePos.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
node.setAbsolutePosition(newNodePos);
|
||||||
|
|
||||||
if(!go.drag.moving) {
|
if(!go.drag.moving) {
|
||||||
go.drag.moving = true;
|
go.drag.moving = true;
|
||||||
// execute dragstart events if defined
|
// execute dragstart events if defined
|
||||||
|
|||||||
6
dist/kinetic-core.min.js
vendored
6
dist/kinetic-core.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1079,7 +1079,7 @@ Kinetic.Node._addGetter = function(constructor, attr) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
// add getters setters
|
// add getters setters
|
||||||
Kinetic.Node.addGettersSetters(Kinetic.Node, ['x', 'y', 'scale', 'detectionType', 'rotation', 'alpha', 'name', 'id', 'offset', 'draggable', 'dragConstraint', 'dragBounds', 'listening']);
|
Kinetic.Node.addGettersSetters(Kinetic.Node, ['x', 'y', 'scale', 'detectionType', 'rotation', 'alpha', 'name', 'id', 'offset', 'draggable', 'dragConstraint', 'dragBounds', 'dragBoundFunc', 'listening']);
|
||||||
Kinetic.Node.addSetters(Kinetic.Node, ['rotationDeg']);
|
Kinetic.Node.addSetters(Kinetic.Node, ['rotationDeg']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
15
src/Stage.js
15
src/Stage.js
@@ -785,8 +785,9 @@ Kinetic.Stage = Kinetic.Container.extend({
|
|||||||
|
|
||||||
if(node) {
|
if(node) {
|
||||||
var pos = that.getUserPosition();
|
var pos = that.getUserPosition();
|
||||||
var dc = node.attrs.dragConstraint;
|
|
||||||
var db = node.attrs.dragBounds;
|
var db = node.attrs.dragBounds;
|
||||||
|
var dbf = node.attrs.dragBoundFunc;
|
||||||
|
var dc = node.attrs.dragConstraint;
|
||||||
var lastNodePos = {
|
var lastNodePos = {
|
||||||
x: node.attrs.x,
|
x: node.attrs.x,
|
||||||
y: node.attrs.y
|
y: node.attrs.y
|
||||||
@@ -812,16 +813,22 @@ Kinetic.Stage = Kinetic.Container.extend({
|
|||||||
newNodePos.y = db.bottom;
|
newNodePos.y = db.bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
node.setAbsolutePosition(newNodePos);
|
if(dbf !== undefined) {
|
||||||
|
// execute dragBoundFunc if defined
|
||||||
|
dbf(newNodePos, evt);
|
||||||
|
}
|
||||||
|
|
||||||
// constraint overrides
|
// constraint overrides
|
||||||
if(dc === 'horizontal') {
|
if(dc === 'horizontal') {
|
||||||
node.attrs.y = lastNodePos.y;
|
newNodePos.y = lastNodePos.y;
|
||||||
}
|
}
|
||||||
else if(dc === 'vertical') {
|
else if(dc === 'vertical') {
|
||||||
node.attrs.x = lastNodePos.x;
|
newNodePos.x = lastNodePos.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
node.setAbsolutePosition(newNodePos);
|
||||||
|
|
||||||
if(!go.drag.moving) {
|
if(!go.drag.moving) {
|
||||||
go.drag.moving = true;
|
go.drag.moving = true;
|
||||||
// execute dragstart events if defined
|
// execute dragstart events if defined
|
||||||
|
|||||||
Reference in New Issue
Block a user