gpt4 book ai didi

javascript - 唯一识别 KineticJS 形状

转载 作者:行者123 更新时间:2023-11-28 01:33:42 24 4
gpt4 key购买 nike

我有一个循环来查看给定形状是否与 KineticJS 程序中的任何其他形状发生碰撞。下面是该情况的伪代码

function hasCollision(shape, index) {
var children = layer.children;
for(var i = 0, l = children.length; i < l; i++) {
if(i === index) continue; // Only check other shapes
if(collision(shape, children[i]))
return true;
}
return false;
}

我不喜欢这种方法的是我必须在代码中的某个位置保存每个形状的索引。此外,如果我从数组中删除元素,代码将会中断。

我阅读了文档,但找不到任何有关比较形状等的内容,但我可能忽略了一些东西。 KineticJS 是否已经有一种方法来唯一识别/比较形状实例?如果没有,可以将自定义数据附加到节点吗?它仍然适用于序列化吗?这样做是否可能会破坏 KineticJS 当前或 future 版本的功能?

编辑:明确地说,这是我正在考虑的解决方案

shape.uid = uid_factory++;

...

function hasCollision(shape) {
var children = layer.children;
for(var i = 0, l = children.length; i < l; i++) {
var other = children[i];
if(other.uid === shape.uid) continue; // Only check other shapes
if(collision(shape, other))
return true;
}
return false;
}

最佳答案

是的。

您可以为任何动力学节点(形状、文本等)分配唯一的 ID:

var shape123 = new Kinetic.Circle({
id:(nextShapeId),
...

你可以像这样获取任何节点的 id:

anyNode.getId();

您可以要求阶段为您提供对该节点的引用,如下所示:

// use stage.find to fetch all nodes with an id == theId

var nodes = stage.find("#"+theId);

// nodes is a collection, so grab the first element

var myNode = nodes[0];

关于javascript - 唯一识别 KineticJS 形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com