소스 검색

Create input-key-and-text.md

Niko McLys 3 년 전
부모
커밋
7ada915e6e
1개의 변경된 파일53개의 추가작업 그리고 0개의 파일을 삭제
  1. 53 0
      docs/ru/manuals/input-key-and-text.md

+ 53 - 0
docs/ru/manuals/input-key-and-text.md

@@ -0,0 +1,53 @@
+---
+title: Ввод клавиш и текста в Defold
+brief: В этом руководстве объясняется, как работает ввод клавиш и текста.
+---
+
+::: sidenote
+Рекомендуется ознакомиться с общим принципом работы ввода в Defold, способами получения ввода и порядком получения ввода в файлах сценария. Узнайте больше о системе ввода в [руководстве](/manuals/input).
+:::
+
+# Клавишные триггеры
+Клавишные триггеры позволяют привязать ввод одной клавиши клавиатуры к игровым действиям. Каждая клавиша отдельно привязывается к соответствующему действию. Клавишные триггеры используются для привязки определенных кнопок к определенным функциям, например, для перемещения персонажа с помощью стрелок или клавиш WASD. Если вам нужно считать произвольный ввод с клавиатуры, используйте текстовые триггеры (см. ниже).
+
+![](images/input/key_bindings.png)
+
+```lua
+function on_input(self, action_id, action)
+    if action_id == hash("left") then
+        if action.pressed then
+            -- start moving left
+        elseif action.released then
+            -- stop moving left
+        end
+    end
+end
+```
+
+# Текстовые триггеры
+Текстовые триггеры используются для считывания произвольного текстового ввода. Существует два типа текстовых триггеров: текст и маркированный текст.
+
+![](images/input/text_bindings.png)
+
+## Функция Text
+Функция `text` захватывает обычный текстовый ввод. Он устанавливает поле `text` таблицы действий в строку, содержащую введенный символ. Действие выполняется только при нажатии кнопки, никаких действий `отпустить` или `повторить` не посылается.
+
+```lua
+function on_input(self, action_id, action)
+    if action_id == hash("text") then
+        -- Concatenate the typed character to the "user" node...
+        local node = gui.get_node("user")
+        local name = gui.get_text(node)
+        name = name .. action.text
+        gui.set_text(node, name)
+    end
+end
+```
+
+## Маркированный текст
+Функция `marked-text` используется в основном для азиатских клавиатур, где несколько нажатий клавиш могут соответствовать одному вводу. Например, в клавиатуре iOS "Japanese-Kana" пользователь может набирать комбинации, и в верхней части клавиатуры будут отображаться доступные символы или последовательности символов, которые можно ввести.
+
+![Ввод маркированного текста](images/input/marked_text.png){srcset="images/input/[email protected] 2x"}
+
+- Каждое нажатие клавиши генерирует отдельное действие и устанавливает поле действия `text` в текущую введенную последовательность символов ("маркированный текст").
+- Когда пользователь выбирает символ или комбинацию символов, отправляется отдельное триггерное действие типа `text` (при условии, что оно установлено в списке привязки ввода). Отдельное действие устанавливает поле действия `text` в конечную последовательность символов.