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