我正在编写一个应用程序,我必须在其中绘制很多可拖动的二次曲线。
我为此使用 Kinetic.Shape (KineticJS 4.4.3)。
由于性能不是很好,我尝试分析和优化代码,发现drawFunc函数执行了两次。查看随附的演示代码。
var stage = new Kinetic.Stage({
container: 'kinetic',
width: 400,
height: 300
});
var curveLayer = new Kinetic.Layer();
var line = new Kinetic.Shape({
drawFunc: function (canvas) {
console.log("drawFunc executed");
var context = canvas.getContext();
context.beginPath();
context.moveTo(10, 10);
context.quadraticCurveTo(95, 100, 200, 10);
canvas.stroke(this);
},
strokeWidth: 10
});
curveLayer.add(line);
stage.add(curveLayer);
如果您运行脚本,控制台中将执行 2 次“drawFunc 执行”。
我不明白为什么,我问自己是否有更好的方法来做到这一点。
小提琴的链接:http: //jsfiddle.net/solitud/ZpU4J/9/
我的项目的链接:http: //modulargrid.net/e/patches/view/92