【发布时间】:2013-04-13 04:59:54
【问题描述】:
我想在我的画布上即时绘制一条路径。我知道如何使用以下 HTML5 画布代码:
$('#drawing-canvas').mousedown(function(e){
startx = e.pageX;
starty = e.pageY;
cxt.beginPath();
cxt.moveTo(startx,starty);
});
$('#drawing-canvas').mousemove(function(e){
cxt.lineTo(e.pageX,e.pageY);
cxt.strokeStyle='red';
cxt.lineWidth = 1;
cxt.stroke();
});
我的问题是如何使用 KineticJS 完成同样的事情。
更新:
我认为这样的事情可能会奏效。
$('#container').mousemove(function(e){
var pen = new Kinetic.Shape({
drawFunc: function(canvas) {
var context = canvas.getContext();
if(moving == false){ // grab the start xy coords from mousedown event
context.beginPath();
context.moveTo(startx,starty);
moving = true;
}
context.lineTo(e.pageX,e.pageY);
context.strokeStyle='#ff00ff';
context.lineWidth = 1;
context.stroke();
}
penlayer.add(pen);
stage.add(penlayer);
});
});
然而,处理 beginPath() 和 moveTo(..) 被证明是有问题的。我需要在 mousedown 事件上设置这些。有什么想法吗?
更新:
在http://www.redshiftsolutions.com/demos/whiteboard/whiteboard.html 选择笔选项可以看到我想要获得的效果。这是一个使用画布和 jQuery 的简单协作白板。由于添加了拖放功能,我想将其转换为 KineticJS。
【问题讨论】:
-
是的,我也遇到过这个。它在鼠标移动的起点和终点之间绘制一条直线。我尝试修改代码以构建一系列线段,新线段起点等于最后一个线段端点,但它只绘制最后一个线段。
-
谢谢你们的cmets。我同意我的代码有问题,部分原因是我不熟悉 Kinetic。我会在适当的时候尝试在 Fiddle 上放一些修改过的代码。与此同时,我更新了我的问题以增加一些额外的清晰度。
-
“redshiftsolutions.com”的链接已失效。可以更新吗?
标签: kineticjs