mirror of
https://github.com/konvajs/konva.git
synced 2026-03-03 16:58:33 +08:00
added layer hitGraphEnabled flag
This commit is contained in:
54
src/Layer.js
54
src/Layer.js
@@ -263,22 +263,43 @@
|
|||||||
},
|
},
|
||||||
getStage: function() {
|
getStage: function() {
|
||||||
return this.parent;
|
return this.parent;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* enable hit graph
|
||||||
|
* @name enableHitGraph
|
||||||
|
* @method
|
||||||
|
* @memberof Kinetic.Layer.prototype
|
||||||
|
* @returns {Node}
|
||||||
|
*/
|
||||||
|
enableHitGraph: function() {
|
||||||
|
this.setHitGraphEnabled(true);
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* disable hit graph
|
||||||
|
* @name enableHitGraph
|
||||||
|
* @method
|
||||||
|
* @memberof Kinetic.Layer.prototype
|
||||||
|
* @returns {Node}
|
||||||
|
*/
|
||||||
|
disableHitGraph: function() {
|
||||||
|
this.setHitGraphEnabled(false);
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Kinetic.Util.extend(Kinetic.Layer, Kinetic.Container);
|
Kinetic.Util.extend(Kinetic.Layer, Kinetic.Container);
|
||||||
|
|
||||||
// add getters and setters
|
// add getters and setters
|
||||||
Kinetic.Factory.addGetterSetter(Kinetic.Layer, 'clearBeforeDraw', function() {
|
Kinetic.Factory.addGetterSetter(Kinetic.Layer, 'clearBeforeDraw', true);
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set flag which determines if the layer is cleared or not
|
* set flag which determines if the layer is cleared or not
|
||||||
* before drawing
|
* before drawing
|
||||||
* @name setClearBeforeDraw
|
* @name setClearBeforeDraw
|
||||||
* @method
|
* @method
|
||||||
* @memberof Kinetic.Node.prototype
|
* @memberof Kinetic.Layer.prototype
|
||||||
* @param {Boolean} clearBeforeDraw
|
* @param {Boolean} clearBeforeDraw
|
||||||
|
* @returns {Node}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -286,6 +307,29 @@
|
|||||||
* before drawing
|
* before drawing
|
||||||
* @name getClearBeforeDraw
|
* @name getClearBeforeDraw
|
||||||
* @method
|
* @method
|
||||||
* @memberof Kinetic.Node.prototype
|
* @memberof Kinetic.Layer.prototype
|
||||||
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Kinetic.Factory.addGetterSetter(Kinetic.Layer, 'hitGraphEnabled', true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable / disable hit graph
|
||||||
|
* @name setHitGraphEnabled
|
||||||
|
* @method
|
||||||
|
* @memberof Kinetic.Layer.prototype
|
||||||
|
* @param {Boolean} enable
|
||||||
|
* @returns {Node}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get flag which determines if the layer is cleared or not
|
||||||
|
* before drawing
|
||||||
|
* @name getHitGraphEnabled
|
||||||
|
* @method
|
||||||
|
* @memberof Kinetic.Layer.prototype
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Kinetic.Layer.prototype.isHitGraphEnabled = Kinetic.Layer.prototype.getHitGraphEnabled;
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -418,7 +418,8 @@
|
|||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
shouldDrawHit: function() {
|
shouldDrawHit: function() {
|
||||||
return this.isListening() && this.isVisible() && !Kinetic.isDragging();
|
var layer = this.getLayer();
|
||||||
|
return layer && layer.isHitGraphEnabled() && this.isListening() && this.isVisible() && !Kinetic.isDragging();
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* determine if node is visible or not. Node is visible only
|
* determine if node is visible or not. Node is visible only
|
||||||
|
|||||||
@@ -82,6 +82,9 @@
|
|||||||
this._setAttr(CONTAINER, container);
|
this._setAttr(CONTAINER, container);
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
shouldDrawHit: function() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
draw: function() {
|
draw: function() {
|
||||||
Kinetic.Node.prototype.draw.call(this);
|
Kinetic.Node.prototype.draw.call(this);
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -79,16 +79,15 @@
|
|||||||
|
|
||||||
function make_shape(color) {
|
function make_shape(color) {
|
||||||
if (VERSION === 'new') {
|
if (VERSION === 'new') {
|
||||||
/*
|
|
||||||
return new Kinetic.Rect({
|
return new Kinetic.Rect({
|
||||||
fill: color,
|
fill: color,
|
||||||
width: 10,
|
width: 10,
|
||||||
height: 10,
|
height: 10
|
||||||
listening: false
|
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
|
/*
|
||||||
return new Kinetic.Shape({
|
return new Kinetic.Shape({
|
||||||
drawFunc: function(context) {
|
drawFunc: function(context) {
|
||||||
var _context = context._context;
|
var _context = context._context;
|
||||||
@@ -99,6 +98,7 @@
|
|||||||
_context.fill();
|
_context.fill();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return new Kinetic.Shape(function(){
|
return new Kinetic.Shape(function(){
|
||||||
@@ -120,7 +120,9 @@
|
|||||||
width: 578,
|
width: 578,
|
||||||
height: 200
|
height: 200
|
||||||
});
|
});
|
||||||
circlesLayer = new Kinetic.Layer();
|
circlesLayer = new Kinetic.Layer({
|
||||||
|
hitGraphEnabled: false
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
stage = new Kinetic.Stage("container", width, height);
|
stage = new Kinetic.Stage("container", width, height);
|
||||||
circlesLayer = new Kinetic.Layer();
|
circlesLayer = new Kinetic.Layer();
|
||||||
|
|||||||
@@ -261,4 +261,35 @@ suite('Layer', function() {
|
|||||||
quality: 1
|
quality: 1
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
test('hit graph enable disable', function() {
|
||||||
|
var stage = addStage();
|
||||||
|
var layer = new Kinetic.Layer();
|
||||||
|
|
||||||
|
var circle = new Kinetic.Circle({
|
||||||
|
x: stage.getWidth() / 2,
|
||||||
|
y: stage.getHeight() / 2,
|
||||||
|
radius: 70,
|
||||||
|
fill: 'red',
|
||||||
|
stroke: 'black',
|
||||||
|
strokeWidth: 4
|
||||||
|
});
|
||||||
|
|
||||||
|
layer.add(circle);
|
||||||
|
stage.add(layer);
|
||||||
|
|
||||||
|
assert.equal(layer.isHitGraphEnabled(), true);
|
||||||
|
assert.equal(layer.shouldDrawHit(), true);
|
||||||
|
|
||||||
|
layer.disableHitGraph();
|
||||||
|
|
||||||
|
assert.equal(layer.isHitGraphEnabled(), false);
|
||||||
|
assert.equal(layer.shouldDrawHit(), false);
|
||||||
|
|
||||||
|
layer.enableHitGraph();
|
||||||
|
|
||||||
|
assert.equal(layer.isHitGraphEnabled(), true);
|
||||||
|
assert.equal(layer.shouldDrawHit(), true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user