使用cgSceneGraph 1.4.2取消选择节点

时间:2013-02-20 15:59:33

标签: html5 canvas

我想知道是否有办法在发生其他事情时取消选择节点,例如,如果我按某个特定键或其他事件发生。

此外,是否有一种快速方法可以访问所选节点的所选子节点?我现在所做的是使用循环来检查每个节点是否被选中。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。 您可以使用this.cgSceneGeaph.setSelected(boolean)方法选择或取消选择节点。然后将调度“onSelect”或“onDeselect”事件。

无法直接访问父节点的选定节点。有一种方法可以访问场景中选定节点的列表。 在您的主要应用程序(继承自CGSGScene)上,使用:

this.selectedNodes; //array of selected nodes

这样您就可以访问所有选定的节点。

编辑:完成代码以显示如何取消选择节点

其他方式:使用您要检查的父节点的CGSGTraverser:

var condition = function(node) {
    return node.isSelected === true;
};

var traverser = new CGSGTraverser();
var listSelectedNodes = traverser.traverse(myNode, condition, null);

for (var s = 0, len = listSelectedNodes.length; s < len; s++) {
    this.sceneGraph.deselectNode(listSelectedNodes[s]);
}

您还可以查看遍历器example on the web site。 这是代码的链接: http://gwennaelbuchet.github.com/cgSceneGraph/examples/04_Advanced/04_Traverser/js/class.main.js

希望这有助于:)