特定のキーを押したときや他のイベントが発生したときなど、他のことが起こったときにノードの選択を解除する方法があるかどうかを知りたいです。
また、選択されたノードの選択された子ノードにアクセスするための高速な方法はありますか?私が今していることは、ループを使用して、各ノードが選択されているかどうかを確認することです。
お時間をいただきありがとうございます。
はい、可能です。メソッドを使用this.cgSceneGeaph.setSelected(boolean)
して、ノードを選択または選択解除できます。その後、「onSelect」または「onDeselect」イベントが送出されます。
親ノードの選択したノードに直接アクセスする方法はありません。シーンで選択したノードのリストにアクセスする方法があります。メイン アプリケーション (CGSGScene から継承) で、次を使用します。
this.selectedNodes; //array of selected nodes
この方法で、選択したすべてのノードにアクセスできます。
EDIT :ノードの選択を解除する方法を示すコードを完成させます
他の方法: チェックしたい親ノードからの 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]);
}
また、Web サイトでトラバーサーの例を参照することもできます。コードへのリンクは次のとおりです: http://gwennaelbuchet.github.com/cgSceneGraph/examples/04_Advanced/04_Traverser/js/class.main.js
これが役立つことを願っています:)