Измените атрибут "config" интерактора для отключения некоторых пользовательских событий.

Я хотел бы отобразить несколько видов одной и той же сцены, один из которых полностью интерактивный, а два других сверху и справа и которые можно только увеличить. Поэтому моя проблема - отключить некоторые взаимодействия с пользователем на рендере.

Одна альтернатива - перегружать другие методы обработчика событий, заставляя камеру рендерера сохранять тот же вид, если событие не является колесом мыши. Это работает, но это не красиво (ни для программиста, ни для пользователя).

Поэтому я хочу изменить атрибут 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();

Вы видите проблему? Изменение 'config' должно быть сделано между созданием нового интерактора и его инициализацией. Но, если я не ошибаюсь, вы не можете создать интерактор и установить для него средство визуализации вручную, например, как атрибут "интерактора" защищен.

Неужели я что-то не так? Есть идеи, чтобы выполнить это?

1 ответ

Это правильный способ сделать это

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.

Другие вопросы по тегам