love.textinput (Русский)
Available since LÖVE 0.9.0 |
This function is not supported in earlier versions. |
Функция вызывается при наборе текста пользователем. К примеру при нажатии shift-2 на Американской раскладке клавиатуры эта функция вызовется с параметром "@".
Contents
Функция
Вид
love.textinput( text )
Аргументы
string (Русский) text
- Текст в UTF-8.
Возвращает
Ничего.
Примечания
Хотя Lua и может без проблем хранить UTF-8 строки, но с некоторыми функциями возникают проблемы при обработке UTF-8 строки. К примеру, #text
(и string.len(text)
) вернёт количество байт в строке, а не количество символов в UTF-8 кодировке. Lua wiki и презентация от одного из создателей Lua дают более глубокое понимание работы юникода в Lua, с полезными советами.
Библиотека utf8 (Русский) используется для взаимодействия с строкой закодированной в UTF-8 (такой как строка полученная в функции love.textinput)
В Android и, textinput по умолчанию выключен; вызовите 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.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