Spec-Zone.ru › LÖVE

love.textinput

Доступно начиная с LÖVE 0.9.0
Эта функция не поддерживается в более ранних версиях.

Вызывается при вводе текста пользователем. Например, если на раскладке американской клавиатуры нажата клавиша Shift-2, будет сгенерирован текст «@».

Функция

Синопсис

love.textinput( text )

Аргументы

string text
Текст в кодировке UTF-8.

Возвращаемое значение

Ничего.

Примечания

Хотя строки Lua могут хранить текст в кодировке UTF-8 без проблем, многие функции библиотеки строк Lua не будут обрабатывать его так, как ожидается. Например, #text (и string.len(text)) вернут количество байтов в строке, а не количество символов Юникод. В вики Lua и презентации одного из создателей Lua даны более подробные объяснения с советами.

Библиотека utf8 может использоваться для работы с текстом в кодировке UTF-8 (например, с аргументом «текст», переданным в эту функцию).

На Android и iOS 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! -- "
 
    -- enable key repeat so backspace can be held down to trigger love.keypressed multiple times.
    love.keyboard.setKeyRepeat(true)
end
 
function love.textinput(t)
    text = text .. t
end
 
function love.keypressed(key)
    if key == "backspace" then
        -- get the byte offset to the last UTF-8 character in the string.
        local byteoffset = utf8.offset(text, -1)
 
        if byteoffset then
            -- remove the last UTF-8 character.
            -- string.sub operates on bytes rather than UTF-8 characters, so we couldn't do 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
  • textinput vs keypressed


© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/love.textinput

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API