Образовательный виртуальный мир vAcademia

Инструменты пользователя

Инструменты сайта


Боковая панель

Типовая программа. Именование объектов. Перехват событий объектов

Типовая программа состоит из следующих шагов:
1. Получить ссылки на управляемые объекты.
2. Назначить обработчики необходимых событий для этих объектов.

Примером программы на vJS может служить следующий код:

var obj1 = scene.getObjectByName("ИмяМоегоОбъекта");
obj1.onPress = function()
{
  // сделать что-нибудь, если нажали на объект
}

Ссылка на объект получается с помощью вызова метода getObjectByName глобального объекта scene. Обычно единственный параметр этой функции является фиксировано заданной строкой. Однако, возможно формирование имени объекта на лету в строковую переменную. Работа программы не начинается до тех пор, пока все объекты, используемые программой не будут загружены. Если вы используете обращения к объектам по именам из строковых переменных, то рекомендуется во избежание некорректной работы вашей программы в начале программы разместить вызовы метода requireObject глобального объекта scene. Выполнение программы также не начнется, пока объекты, имена которых будут перечислены в вызовах requireObject, не будут загружены.

Для того, чтобы задать имя объекта, выделите его с помощью инструмента размещения объектов. Нажмите кнопку вызова настройки свойств.

В появившемся окне выберите вкладку общих свойств.

и введите нужное имя.

У 3D-объекта существует несколько стандартных событий, на которые вы можете задать обработчики:

  • onLoad – объект загружен (геометрия объекта, однако возможно, что текстуры еще подгружаются);
  • onPress – нажата кнопка мыши на объекте;
  • onRelease – кнопка мыши отпущена на объекте;
  • onReleaseOutside – кнопка мыши отпущена вне объекта;
  • onRollOver – указатель мыши попал на объект;
  • onRollOut – указатель мыши вышел из объект;
  • onKeyDown – нажата клавиша клавиатуры;
  • onKeyUp – отпущена клавиша клавиатуры.

В случае обработки клавиатурных событий код нажатой клавиши можно получить с помощью свойств и методов глобального объекта Key:

  • Key.keyCode – код нажатой клавиши;
  • Key.getAscii() – возвращает код нажатой клавиши в раскладке ASCII;
  • Key.getUnicode() – возвращает код нажатой клавише в кодировке UTF8;
  • Key.shiftKey – нажата ли клавиша Shift;
  • Key.shiftLeft – нажата ли левая клавиша Shift;
  • Key.ctrlKey – нажата ли клавиша Ctrl;
  • Key.ctrlLeft – нажата ли левая клавиша Ctrl;
  • Key.altKey – нажата ли клавиша Alt;
  • Key.altLeft – нажата ли левая клавиша Alt.

Для сравнения значения свойства Key.keyCode c наиболее популярными клавишами можно использовать следующие константы:

  • Key.BACKSPACE – кнопка BackSpace;
  • Key.CAPSLOCK – кнопка CapsLock;
  • Key.DELETEKEY – кнопка Delete;
  • Key.DOWN – кнопка со стрелкой вниз;
  • Key.END – кнопка End;
  • Key.ENTER – кнопка Enter;
  • Key.ESCAPE – кнопка Escape;
  • Key.HOME – кнопка Home;
  • Key.INSERT – кнопка Insert;
  • Key.LEFT – кнопка со стрелкой влево;
  • Key.PGDN – кнопка PageDown;
  • Key.PGUP – кнопка PageUp;
  • Key.RIGHT – кнопка со стрелкой вправо;
  • Key.SPACE – кнопка пробела;
  • Key.TAB – кнопка табуляции;
  • Key.UP – кнопка со стрелкой вверх.

Чтобы события нажатия клавиш приходили вашему 3D-объекту, необходимо подписать его на получений событий от клавиатуры принудительно с помощью команды Key.addListener( obj3d);

Чтобы отписать 3D-объект от клавиатурных событий используете команду Key.removeListener( obj3d);

Подписка и отписка клавиатурных событий может использоваться как гибкое и мощное средство определения того, какой объект должен реагировать на клавиатурный ввод в текущий момент времени.

jazyk/basics.txt · Последние изменения: 2023/05/08 17:44 (внешнее изменение)