【发布时间】:2018-06-13 05:31:29
【问题描述】:
每次点击画布时,这段代码都会创建一个矩形。然后将每个矩形对象推入一个数组。我希望创建的每个矩形都能够在单击时返回自己的数组索引。
我想用这个实现什么?
我的想法是一个带有 GUI 的软件,它允许创建带有输入和输出端口的模块/节点,并用电线连接它们(如 Max/MSP、Pure Data、Quartz Composer、Reaktor、NodeRed 等)。为了能够相互连接模块,它们需要能够返回自己的 ID,以便模块外部的函数可以连接它们。
var width = window.innerWidth - 50;
var height = window.innerHeight - 100;
var rectArray = [];
var stage = new Konva.Stage({
container: 'container',
width: width,
height: height
});
var layer = new Konva.Layer();
stage.add(layer);
var clickRect = new Konva.Rect({ // clickable background
x: 0,
y: 0,
width: width,
height: height,
stroke: 'black',
strokeWidth: 2,
listening: 'true'
})
layer.add(clickRect);
var text = new Konva.Text({ //text to display info
x: 10,
y: 10,
fontFamily: 'Calibri',
fontSize: 24,
text: '',
fill: 'black'
});
clickRect.on('click', function() { /// here we create a module
var newRect = new createModule();
rectArray.push(newRect);
});
function createModule() {
var mouseX = stage.getPointerPosition().x;
var mouseY = stage.getPointerPosition().y;
var rect = new Konva.Rect({
x: mouseX,
y: mouseY,
width: 50,
height: 50,
stroke: 'black',
strokeWidth: 2,
draggable: true
});
rect.on('click', function(evt) {
alert("clicked");
})
text.setText(rectArray.length + 1);
layer.add(text);
layer.add(rect);
stage.add(layer);
}
stage.draw(); // draw so we can see click rect.
<script src="https://cdn.rawgit.com/konvajs/konva/1.7.6/konva.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container"></div>
<p id="display1">-</p>
【问题讨论】:
标签: javascript