mirror of
https://github.com/konvajs/konva.git
synced 2025-09-20 03:18:00 +08:00
findOne Method
This commit is contained in:
@@ -184,6 +184,22 @@
|
|||||||
|
|
||||||
return Konva.Collection.toCollection(retArr);
|
return Konva.Collection.toCollection(retArr);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* return a first node from `find` method
|
||||||
|
* @method
|
||||||
|
* @memberof Konva.Container.prototype
|
||||||
|
* @param {String} selector
|
||||||
|
* @returns {Konva.Node}
|
||||||
|
* @example
|
||||||
|
* // select node with id foo
|
||||||
|
* var node = stage.findOne('#foo');
|
||||||
|
*
|
||||||
|
* // select node with name bar inside layer
|
||||||
|
* var nodes = layer.findOne('.bar');
|
||||||
|
*/
|
||||||
|
findOne : function(selector) {
|
||||||
|
return this.find(selector)[0];
|
||||||
|
},
|
||||||
_getNodeById: function(key) {
|
_getNodeById: function(key) {
|
||||||
var node = Konva.ids[key];
|
var node = Konva.ids[key];
|
||||||
|
|
||||||
|
@@ -229,6 +229,48 @@ suite('Container', function() {
|
|||||||
assert.equal(node, rect);
|
assert.equal(node, rect);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
test('select shape by id and name with findOne', function() {
|
||||||
|
var stage = addStage();
|
||||||
|
var layer = new Konva.Layer({
|
||||||
|
id: 'myLayer'
|
||||||
|
});
|
||||||
|
var circle = new Konva.Circle({
|
||||||
|
x: stage.getWidth() / 2,
|
||||||
|
y: stage.getHeight() / 2,
|
||||||
|
radius: 70,
|
||||||
|
fill: 'green',
|
||||||
|
stroke: 'black',
|
||||||
|
strokeWidth: 4,
|
||||||
|
id: 'myCircle'
|
||||||
|
});
|
||||||
|
|
||||||
|
var rect = new Konva.Rect({
|
||||||
|
x: 300,
|
||||||
|
y: 100,
|
||||||
|
width: 100,
|
||||||
|
height: 50,
|
||||||
|
fill: 'purple',
|
||||||
|
stroke: 'black',
|
||||||
|
strokeWidth: 4,
|
||||||
|
name: 'myRect'
|
||||||
|
});
|
||||||
|
|
||||||
|
layer.add(circle);
|
||||||
|
layer.add(rect);
|
||||||
|
stage.add(layer);
|
||||||
|
|
||||||
|
var node;
|
||||||
|
node = stage.findOne('#myCircle');
|
||||||
|
assert.equal(node, circle);
|
||||||
|
node = layer.findOne('.myRect');
|
||||||
|
assert.equal(node, rect);
|
||||||
|
node = layer.findOne('#myLayer');
|
||||||
|
assert.equal(node, undefined, 'node should be undefined');
|
||||||
|
node = stage.findOne('#myLayer');
|
||||||
|
assert.equal(node, layer, 'node type should be Layer');
|
||||||
|
});
|
||||||
|
|
||||||
// ======================================================
|
// ======================================================
|
||||||
test('select shapes with multiple selectors', function() {
|
test('select shapes with multiple selectors', function() {
|
||||||
var stage = addStage();
|
var stage = addStage();
|
||||||
|
@@ -839,6 +839,33 @@ suite('Shape', function() {
|
|||||||
assert.equal(rect instanceof Konva.Rect, true);
|
assert.equal(rect instanceof Konva.Rect, true);
|
||||||
assert.equal(rect instanceof Konva.Shape, true);
|
assert.equal(rect instanceof Konva.Shape, true);
|
||||||
assert.equal(rect instanceof Konva.Node, true);
|
assert.equal(rect instanceof Konva.Node, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('disable stroke for hit', function(){
|
||||||
|
var stage = addStage();
|
||||||
|
|
||||||
|
var layer = new Konva.Layer();
|
||||||
|
|
||||||
|
var rect = new Konva.Rect({
|
||||||
|
x: 100,
|
||||||
|
y: 50,
|
||||||
|
width: 100,
|
||||||
|
height: 50,
|
||||||
|
stroke: 'red',
|
||||||
|
strokeWidth: 20
|
||||||
|
});
|
||||||
|
// default value
|
||||||
|
assert.equal(rect.strokeHit(), true);
|
||||||
|
|
||||||
|
rect.strokeHit(false);
|
||||||
|
assert.equal(rect.strokeHit(), false);
|
||||||
|
layer.add(rect);
|
||||||
|
stage.add(layer);
|
||||||
|
|
||||||
|
|
||||||
|
assert.equal(rect.getY(), 50);
|
||||||
|
|
||||||
|
var trace = layer.getHitCanvas().getContext().getTrace(true);
|
||||||
|
assert.equal(trace, 'clearRect();save();transform();beginPath();rect();closePath();save();fillStyle;fill();restore();restore();');
|
||||||
});
|
});
|
||||||
});
|
});
|
Reference in New Issue
Block a user