javascript - Kinetic.js 文本有时会在设置填充值的形状下绘制

标签 javascript canvas kineticjs

在这个 fiddle 中:http://jsfiddle.net/m1erickson/fu5LP/

enter image description here

绘制了一组楔形,中间带有文本,以在 Canvas 上生成上述图像。

然而,当您设置楔形对象的填充值时,输出相当奇怪:

enter image description here

一些文本值被绘制在楔形的填充下,我不知道为什么。

fiddle 的代码在这里:

var stage = new Kinetic.Stage({
container: 'container',
width: 350,
height: 350
});
var layer = new Kinetic.Layer();
stage.add(layer);

var cx = 175;
var cy = 175;
var wedgeRadius = 140;
var accumAngle = 0;

var center = new Kinetic.Circle({
x: cx,
y: cy,
radius: 5,
fill: 'red'
});
layer.add(center);

for (var i = 0; i < 12; i++) {
    newTextWedge(30, "Element # " + i);
}

function newTextWedge(angle, text) {

var wedge = new Kinetic.Wedge({
    fill : 'black',
    x: cx,
    y: cy,
    //If I add this fill the above output of hiding text occurs
    //fill: 'black',
    radius: wedgeRadius,
    angleDeg: angle,
    stroke: 'gray',
    strokeWidth: 1,
    rotationDeg: -accumAngle + angle / 2
});
layer.add(wedge);

if (accumAngle > 90 && accumAngle < 270) {
    var offset = {
        x: wedgeRadius - 10,
        y: 7
    };
    var textAngle = accumAngle - 180;
} else {
    var offset = {
        x: -50,
        y: 7
    };
    var textAngle = accumAngle;
}

var text = new Kinetic.Text({
    x: cx,
    y: cy,
    text: text,
    fill: 'red',
    offset: offset,
    rotationDeg: textAngle
});
layer.add(text);

layer.draw();

accumAngle += angle;
}

任何人都可以就为什么会发生这种情况给出任何见解?

最佳答案

逐步调试和观察创建的图表显示了正在发生的事情。渲染楔形层,然后渲染文本层。下一个楔形呈现在最后一个文本层之上。

enter image description here

这是 fiddle 的分支: http://jsfiddle.net/smurphy/UvdWt/

Kinetic Shape 有一个方法 moveToBottom(),您可以调用填充的楔形,将其强制到堆栈的底部。 See documentation

layer.add(wedge);
wedge.moveToBottom();

关于javascript - Kinetic.js 文本有时会在设置填充值的形状下绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643781/

相关文章:

javascript - XMLHttpRequest 访问 facebook 开发人员和图

javascript - servlet 不工作(也有空指针错误),servlet 无法从 javascript 获取值

javascript - if条件不满足时数组中返回空值和逗号,JS映射箭头函数

jquery - 绘制线条动画时 tweenjs 的性能问题

delphi - 将 WinApi.Windows.TextOut 与擒纵装置一起使用时出现意外偏移

javascript - Kinetic JS - 在 Canvas 上加载多个图像

php - 配置 Facebook 点赞按钮

javascript - HTML 图表与 MySQL 使用 Javascript PHP

javascript - 使用 KineticJS 在 JavaScript 中拖动多层

javascript - 是否可以在单个层上拥有多个 KineticJS 动画?