0

同じシーンの複数のビューを表示したいと思います。そのうちの 1 つは完全にインタラクティブで、他の 2 つは上と右から、ズームのみ可能です。したがって、私の問題は、レンダリングでのユーザー操作を無効にすることです。

1 つの代替手段は、イベントがマウス ホイールでない場合、レンダラーのカメラが同じビューを維持するように強制して、他のイベント ハンドラー メソッドをオーバーロードすることです。動作しますが、きれいではありません (プログラマーにとってもユーザーにとっても)。

そこで、レンダラーの「config」属性を変更したいと思います。ここに私のコードと説明されている問題があります:

var r1 = new X.renderer('r1'); // r1 is created, but its "interactor" attribute is null, see visualization>renderer.js
r1.interactor().config.MOUSEWHEEL_ENABLED = false; // DO NOT work cause the "interactor" attribute of r1 is null
r1.init(); // r1 is initialized : it creates a new interactor, calls interactor.init(), and puts the new interactor in the "interactor" attribute of r1, , see visualization>renderer.js
r1.interactor().config.MOUSEWHEEL_ENABLED = false; // DO NOT work because the interactor.init() has already generated all the event handler methods and associated them to the listeners, see io>interactor.js

次のことも試しましたが、結果としてレンダラーが黒/空になります:

var r1 = new X.renderer('r1');
r1.init();
r1.interactor().config.MOUSEWHEEL_ENABLED = false;
r1.interactor().init();

問題が見えますか? 「構成」の変更は、新しいインタラクターの作成とその初期化の間に行う必要があります。しかし、私が間違っていなければ、「interactor」属性が保護されているように、interactor を作成してレンダラーに手動で設定することはできません。

私は何か間違っていましたか?それを実行するアイデアはありますか?

4

1 に答える 1

0

これが正しいやり方です

var r1 = new X.renderer('r1');
r1.init();
r1.interactor().config.MOUSEWHEEL_ENABLED = false;
r1.interactor().init();

しかし、あなたは正しかった-タイプミスとエクスポートされたシンボルの欠落のために、これまでのところ機能しませんでした。これはhttps://github.com/xtk/X/commit/f1f80ebb26020f4b13b797993a9008ae07a50195で修正され、現在http://get.goxtk.com/xtk_edge.js で利用できます。

于 2012-04-30T13:36:58.413 に答える