在KineticJS中点击添加一个新点到多边形
Add a new Point to a Polygon on Click in KineticJS
我在舞台上有一个多边形(正方形)。当用户单击多边形的任何边时,将在该点创建一个新顶点,边的数量增加1。
问题:如何检测多边形边缘/笔画上的点击?
在检测到点击后,如何在被点击的地方为多边形添加一个新的顶点/点?我猜测,如果新的点被添加到多边形的points
数组的末尾,多边形可能会重叠,因为它以逆时针的方式绘制多边形。
切换到"click"来捕捉多边形上的点击:
poly.on('click', function(e) {
不幸的是,这也会在多边形的内部抛出点击事件,所以你需要创建2个多边形(一个用于内部,一个用于边框),如果你只想让边框可点击,否则你可能会尝试不填充多边形。
编辑方法:
你可以把两个形状组合在一起,并把它们放在一个组里。第一个形状将有边框,第二个形状将没有边框。
var first_poly = new Kinetic.Polygon({
points: [73, 192, 73, 160, 340, 23, 500, 109, 499, 139, 342, 93],
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 5
});
var second_poly = new Kinetic.Polygon({
points: [73, 192, 73, 160, 340, 23, 500, 109, 499, 139, 342, 93],
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 0
});
first_poly.on("click",function(){
alert("border clicked");
})
// add the shape to the layer
layer.add(first_poly);
layer.add(second_poly);
stage.add(layer);
第二部分借鉴自:动态JS -检测点击形状的边界
接下来是重新绘制多边形的第三部分。抽象地说,你总是可以清除这些多边形,并简单地重新绘制整个多边形。首先确定点击在多边形点数组中的新位置。你可以通过循环每个点来确定最近的两个点,并在它们之间注入它来近似它。
相关文章:
- 一个按钮,点击后会生成一个新的文本框?-Javascript
- 在IE11中,点击next或back按钮,使用intro.js打开一个新页面
- 每次点击都能产生一个新的图像吗
- 谷歌地图设置中心到一个新点击的区域
- Javascript来跟踪点击是否打开了一个新的标签/窗口
- 每次点击时都会打开一个新窗口以获取链接
- 想要从每个“文件夹”上的文件夹加载新图像;下一个“;点击
- 点击按钮打开一个新窗口,用D3画一个大圆
- 警报框:点击确定,然后弹出一个新的浏览器窗口到另一个网站,如何
- 点击按钮,Chrome扩展弹出一个新窗口
- 当我点击链接按钮xyz打开一个新窗口时,ASP.Net链接按钮打开页面x.ASP
- 如何在按钮被点击后显示一个新的按钮
- 如何使用jquery为每个点击的链接弹出一个新的浏览器窗口
- Chrome扩展打开一个新的弹出url按钮点击在Chrome浏览器弹出窗口
- 我可以加载一个新的页面时,有人点击关闭按钮在浏览器上
- 打开一个新的标签作为Pin标签在浏览器上点击一个链接
- 我如何允许点击每个项目/帖子,然后在一个新的屏幕上查看它
- Twitter处理链接的方式:点击然后AJAX,打开一个新的选项卡然后满载
- 在Google Maps API中从Lat和Long创建一个新点
- 在KineticJS中点击添加一个新点到多边形