love.textinput (Українська)
Доступне починаючи з LÖVE 0.9.0 |
Ця функція недоступна в попередніх версіях. |
Викликається, коли користувач вводить текст. Наприклад, якщо на американській клавіатурі натиснути Shift+2, вводиться текст "@"
Contents
Функція
Вигляд
love.textinput( text )
Аргументи
string text
- Введений текст в кодуванні UTF-8.
Повертає
Нічого.
Примітки
Хоч в мові Lua є всі можливості для роботи з текстом в кодування UTF-8 в рядках, багато функцій зі стандартної бібліотеки Lua неправильно працюють з UTF-8. Наприклад, #text
(і string.len(text)
) повертає кількість байтів в рядку, а не кількість символів. В вікі з Lua (анг.) та презентації від одного з авторів Lua (анг.) це пояснено детальніше, і даються деякі поради.
Для роботи з текстом в кодуванні UTF-8 (а функція love.textinput отримує саме такий текст) можна використовувати бібліотеку utf8 (англ.).
В Android та iOS ввід тексту звичайно вимкнено. Щов увімкнути його, викличте функцію love.keyboard.setTextInput (англ.).
Приклади
Записати текст від користувача та вивести його на екрані.
function love.load()
text = "Type away! -- "
end
function love.textinput(t)
text = text .. t
end
function love.draw()
love.graphics.printf(text, 0, 0, love.graphics.getWidth())
end
Вивести текст від користувача на екрані з можливістю стерти його клавішею Backspace.
local utf8 = require("utf8")
function love.load()
text = "Type away! -- "
-- включити повтори клавіш, щоб можна було утримувати Backspace і
-- функція love.keypressed викликалася декілька раз
love.keyboard.setKeyRepeat(true)
end
function love.textinput(t)
text = text .. t
end
function love.keypressed(key)
if key == "backspace" then
-- отримати номер байта, що описує передостанній символ UTF-8 в рядку
local byteoffset = utf8.offset(text, -1)
if byteoffset then
-- видалити останній символ UTF-8.
-- string.sub працює з байтами, а не з символами UTF-8,
-- тому string.sub(text, 1, -2) не спрацює.
text = string.sub(text, 1, byteoffset - 1)
end
end
end
function love.draw()
love.graphics.printf(text, 0, 0, love.graphics.getWidth())
end
Див. також
- love (Українська)
- love.keypressed (Українська)
- love.keyboard.setTextInput (англ.)
- love.keyboard.hasTextInput (англ.)
- utf8 (англ.)
Іншими мовами
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info