0

特定のキーを押したときや他のイベントが発生したときなど、他のことが起こったときにノードの選択を解除する方法があるかどうかを知りたいです。

また、選択されたノードの選択された子ノードにアクセスするための高速な方法はありますか?私が今していることは、ループを使用して、各ノードが選択されているかどうかを確認することです。

お時間をいただきありがとうございます。

4

1 に答える 1

1

はい、可能です。メソッドを使用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

これが役立つことを願っています:)

于 2013-02-20T22:07:43.927 に答える