Archives pour l'étiquette delete

Comment avoir une petite fonction « input » bien sympa en Lua…

(improved version of Nick Steen’s website’s example)

Vous pourriez être très surpris par le fait qu’il n’y ait pas de manière native d’avoir une fonction d’entrée clavier (input) texte sur l’API Lua Nspire. En effet, c’est un peu bizarre car ce sont souvent utilisés pour de nombreux types de programmes (que ce soit dans les jeux pour taper le nom d’utilisateur, ou d’autres applications pour entrer des données utilisateur, etc.)

Quoi qu’il en soit, ne vous inquiétez pas, vous pouvez le programmer vous-même avec un petit bout de code à ajouter à votre script! Il capture en fait les touches appuyées avec la fonction on.charIn , et les enregistre ce que l’utilisateur tape dans une chaîne (concaténation). Il suffit ensuite d’afficher cette chaîne à l’écran, et c’est tout !

Si vous voulez que l’utilisateur sera en mesure de supprimer quelques lettres, il suffit d’ajouter du code pour la fonction on.backspaceKey, et c’est tout!

Dans l’exemple ci-dessous, nous avons fixé une limite de caractères à 25, mais vous pouvez ajuster cette valeur vous-même.

Bref, voilà le code dans sa totalité :

input = ""   
 
function on.paint(gc)
    gc:drawString(input,5,5,"top")  -- display string
end
 
function on.charIn(char)
    if string.len(input) <= 25 then   -- limit of 25 chars
        input = input..char   -- concatenate
        platform.window:invalidate()   --screen refreh
    end
end
 
function on.backspaceKey()
    input = string.usub(input,0,-2)  -- deleting last char
    platform.window:invalidate()  
end