love.textinput (Français)
Disponible depuis LÖVE 0.9.0 |
Ce-tte function n'est pas supporté-e par des versions plus anciennes. |
Appelée lorsque un texte à été saisi par l'utilisateur. Par exemple si majuscule-2 est pressé sur une disposition de clavier américain, le texte « @ » sera généré.
Contents
Fonction
Synopsis
love.textinput( text )
Arguments
string (Français) text
- Le texte encodé en Unicode UTF-.
Retourne
Rien.
Notes
Bien que les chaînes de caractère de Lua peuvent parfaitement utiliser du texte unicode encodé en UTF-8, différentes fonctions de la bibliothèque « string » (chaînes de caractères) de Lua ne traiterons pas le texte comme vous pourriez le prévoir. Par exemple, #text
(et string.len(text)
) retourne le nombre d'octets de la chaîne caractère, plutôt que le nombre de caractères unicode. Le wiki de Lua et une présentation d'un des créateurs de Lua (en anglais) donne des explications plus en profondeur, et quelques astuces.
La bibliothèque utf8 peut être utilisée pour travailler sur du texte unicode encodé en UTF-8 (tel que les arguments de texte fournis à cette fonction.)
Sur Android et iOS, textinput est désactivé par défaut ; il faut appeler love.keyboard.setTextInput pour l'activer.
Exemples
Enregistre et affiche le texte que l'utilisateur écrit.
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
Affiche le texte que l'utilisateur écrit, et efface le texte lorsque la touche effacer est pressée.
local utf8 = require("utf8")
function love.load()
text = "Saisissez du texte ! -- "
-- Active la répétition des touches afin que la touche efface puisse être maintenue pressée et déclenche [[love.keypressed (Français)|love.keypressed]] plusieur fois.
love.keyboard.setKeyRepeat(true)
end
function love.textinput(t)
text = text .. t
end
function love.keypressed(key)
if key == "backspace" then
-- récupère le décalage en octets du dernier caractère UTF-8 de la chaîne.
local byteoffset = utf8.offset(text, -1)
if byteoffset then
-- supprime le dernier caractère UTF-8.
-- string.sub travaille sur les octets plutôt que les caractères UTF-8, on ne peut donc pas utiliser 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
Voir également
- love (Français)
- love.keypressed (Français)
- love.keyboard.setTextInput (Français)
- love.keyboard.hasTextInput (Français)
- utf8 (Français)
- textinput vs keypressed (en anglais)
Autres langues
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