kineticjs组缓存和图层绘制隐藏了动态弧形

时间:2014-06-05 19:58:03

标签: javascript html5 canvas kineticjs

我正在创建一个圆圈作为一组动能弧。当我缓存组并随后在图层上调用绘图功能时,隐藏了四分之三的圆。我认为layer.draw可能需要一个偏移,但实际上我只是在猜测。当我从弧中删除填充,描边或不透明度或从缓存调用中删除对象文字时,将显示整圆。 http://jsfiddle.net/leydar/gm2FT/5/感激地收到了任何见解。

function createArc(n){
    var arc = new Kinetic.Arc({
        innerRadius: 30,
        outerRadius: 50,
        /* if I remove the fill, stroke or opacity 
           the full wheel is correctly displayed */
        fill: 'blue',
        stroke: 'black',
        opacity: 0.3,
        strokeWidth: 1,
        angle: 36,
        rotation: 36*n
    });

    return arc;
}

function init() {
var arc;

    var stage = new Kinetic.Stage({
        container: 'container',
        width: 104,
        height: 104
    });

    var layer = new Kinetic.Layer();
    var circle = new Kinetic.Group();

    for(var i=0;i<10;i++) {
        arc = createArc(i);
        circle.add(arc);
    };

    layer.add(circle);
    stage.add(layer);

    /* if I do not cache or do not call layer.draw()
       then again the wheel is correctly displayed */
    circle.cache({
        x: -52,
        y: -52,
        width: 104,
        height: 104,
        drawBorder: true
    });
    layer.draw();
}

init();

斯蒂芬

1 个答案:

答案 0 :(得分:0)

这是KineticJS的错误。 您可以使用此解决方法:

Kinetic.Arc.prototype._useBufferCanvas = function() {
    return false;
};

http://jsfiddle.net/gm2FT/6/