0

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

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

感谢您的时间。

4

1 回答 1

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]);
}

您还可以查看网站上的遍历器示例。这是代码的链接:http: //gwennaelbuchet.github.com/cgSceneGraph/examples/04_Advanced/04_Traverser/js/class.main.js

希望这可以帮助:)

于 2013-02-20T22:07:43.927 回答