mirror of
https://github.com/konvajs/konva.git
synced 2025-09-21 04:27:56 +08:00
Fixed #301: TextPath not responding to events (now rendering glyphs to hit canvas for event detection)
This commit is contained in:
@@ -52,6 +52,8 @@
|
||||
// TODO: shouldn't this be on the prototype?
|
||||
this._fillFunc = _fillFunc;
|
||||
this._strokeFunc = _strokeFunc;
|
||||
this._fillFuncHit = _fillFunc;
|
||||
this._strokeFuncHit = _strokeFunc;
|
||||
|
||||
this.className = 'TextPath';
|
||||
|
||||
@@ -65,8 +67,6 @@
|
||||
that._setTextData();
|
||||
},
|
||||
drawFunc: function(context) {
|
||||
var charArr = this.charArr;
|
||||
|
||||
context.setAttr('font', this._getContextFont());
|
||||
context.setAttr('textBaseline', 'middle');
|
||||
context.setAttr('textAlign', 'left');
|
||||
@@ -77,8 +77,6 @@
|
||||
context.save();
|
||||
|
||||
var p0 = glyphInfo[i].p0;
|
||||
var p1 = glyphInfo[i].p1;
|
||||
var ht = parseFloat(this.attrs.fontSize);
|
||||
|
||||
context.translate(p0.x, p0.y);
|
||||
context.rotate(glyphInfo[i].rotation);
|
||||
@@ -93,7 +91,7 @@
|
||||
// context.strokeStyle = 'cyan';
|
||||
// else
|
||||
// context.strokeStyle = 'green';
|
||||
|
||||
// var p1 = glyphInfo[i].p1;
|
||||
// context.moveTo(p0.x, p0.y);
|
||||
// context.lineTo(p1.x, p1.y);
|
||||
// context.stroke();
|
||||
@@ -183,7 +181,7 @@
|
||||
|
||||
var currLen = 0;
|
||||
var attempts = 0;
|
||||
var needNextSegment = false;
|
||||
|
||||
p1 = undefined;
|
||||
while(Math.abs(glyphWidth - currLen) / glyphWidth > 0.01 && attempts < 25) {
|
||||
attempts++;
|
||||
|
@@ -16,17 +16,18 @@ suite('TextPath', function() {
|
||||
layer.add(path);
|
||||
|
||||
var textpath = new Kinetic.TextPath({
|
||||
stroke: 'black',
|
||||
strokeWidth: 1,
|
||||
fill: 'orange',
|
||||
fontSize: '18',
|
||||
fontSize: '24',
|
||||
fontFamily: 'Arial',
|
||||
text: 'The quick brown fox jumped over the lazy dog\'s back',
|
||||
data: c
|
||||
});
|
||||
textpath.on('mouseover', function() { this.setFill('blue'); layer.drawScene(); });
|
||||
textpath.on('mouseout', function() { this.setFill('orange'); layer.drawScene(); });
|
||||
|
||||
layer.add(textpath);
|
||||
stage.add(layer);
|
||||
showHit(layer);
|
||||
|
||||
assert.equal(textpath.getClassName(), 'TextPath', 'getClassName should be TextPath');
|
||||
|
||||
|
Reference in New Issue
Block a user