每次单击画布时,这段代码都会创建矩形。然后将每个矩形对象推送到一个数组中。我希望创建的每个矩形在单击时都能够返回自己的数组索引。
我想用这个达到什么目的?
我的想法是一个带有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>
取决于您的需求。您可以将索引(等于推送数组之前的长度)提供给“构造函数”(即使您在这里没有真正创建对象 IMO):
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.length);
rectArray.push(newRect);
});
function createModule(index) {
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 on " + index);
})
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>
首先:您需要在createMoules
函数中返回创建的rect。调用该函数时不应该需要new
关键字。
然后你就可以像rectArray.indexOf(evt.target)
一样查询点击的rect的索引
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 = 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(rectArray.indexOf(evt.target));
})
text.setText(rectArray.length + 1);
layer.add(text);
layer.add(rect);
stage.add(layer);
return rect;
}
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>
这是UML图中的实例方法: 此方法的目的是返回客户银行账户的所有汇总详细信息。 BankAccount是包含名称、帐户编号、余额和状态的类: 在BankManager类中,有一个实例变量: 方法),这将打印出所有的客户详细信息?
问题内容: 在hive中,我希望对从最大到最小的数组进行排序,并获得索引数组。 例如,该表是这样的: 我要得到这个: 结果中的arries是初始元素的索引。我怎样才能做到这一点? 问题答案: 使用posexplode爆炸数组以获取索引和值,按值排序,收集索引数组: 经过测试,结果:
我有以下练习: 编写一个名为createListOfObjects的函数,该函数接受 包含名字和姓氏以及返回值的字符串数组 一个对象数组,每个对象都具有属性 和以及名字和姓氏值 对应值* var namesList=['Cameron Betts','Shana Lopez','Angela li']* createListOfObjects(名称列表) = 到目前为止,我的解决方案是: 但它返回
我对编程很陌生,我找不到我的问题的解决方案,你能给我解决方案吗? 我有这个JSON文件: 在我的js中需要类似这样的东西(但我想导入我的JSON以获得像这样的数组): 我不知道不使用jQuery该怎么做。 我已经试过了: 这几乎是我想要的,但当我在代码中使用它时,它不起作用,因为我不想要对象,而是像上面所说的和数组。
问题内容: 从如下所示的数组中,如何获取数组中最大值的索引。对于下面的数组,期望的结果将为‘11’。 问题答案: 我的解决方案是: 注意: 这样,您可以检索与给定 最大值 相关的 每个键 。 __ 如果您只对 其中一个键 感兴趣,只需使用 $ maxs [0]
我有一个2D按钮数组(按钮),它将生成一个5×5的按钮网格。我想在单击时获取单个按钮的索引(例如,(2,2)在中间),并通过创建Topcenter(这将是按钮的索引(x,y-1)或1,2,其中x和y是单击按钮的值)等整数变量,在3 x 3半径内找到围绕原始按钮的按钮的索引值。)然后,我可以向周围的按钮添加文本等。 这是一个可视化: 0,0|0,1|0,2|0,3|0,4 1,0 | 1,1 | 1