我想知道是否有办法在发生其他事情时取消选择节点,例如,如果我按下特定键或发生其他事件时。
另外,是否有一种快速的方法来访问选定节点的选定子节点?我现在要做的是使用循环来检查每个节点是否被选中。
感谢您的时间。
是的,这是可能的。您可以使用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
希望这可以帮助:)