Difference between revisions of "love.textinput"

m (Notes)
(Examples)
Line 31: Line 31:
 
end
 
end
 
</source>
 
</source>
 +
 +
Print text the user writes, and erase text when backspace is pressed.
 +
<source lang="lua">
 +
local utf8 = require("utf8")
 +
 +
function love.load()
 +
    text = "Type away! -- "
 +
end
 +
 +
function love.textinput(t)
 +
    text = text .. t
 +
end
 +
 +
function love.keypressed(key)
 +
    if key == "backspace" then
 +
        local byteoffset = utf8.offset(text, -1) -- get the byte offset to the last UTF-8 character in the string.
 +
 +
        if byteoffset then
 +
            -- remove the last UTF-8 character.
 +
            text = text:sub(1, byteoffset - 1)
 +
        end
 +
    end
 +
end
 +
 +
function love.draw()
 +
    love.graphics.printf(text, 0, 0, love.graphics.getWidth())
 +
end
 +
</source>
 +
 
== See Also ==
 
== See Also ==
 
* [[parent::love]]
 
* [[parent::love]]

Revision as of 04:30, 12 March 2015

Available since LÖVE 0.9.0
This function is not supported in earlier versions.

Called when text has been entered by the user. For example if shift-2 is pressed on an American keyboard layout, the text "@" will be generated.

Function

Synopsis

love.textinput( text )

Arguments

string text
The UTF-8 encoded unicode text.

Returns

Nothing.

Notes

Although Lua strings can store UTF-8 encoded unicode text just fine, many functions in Lua's string library will not treat the text as you might expect. For example, #text (and string.len(text)) will give the number of bytes in the string, rather than the number of unicode characters. The Lua wiki and a presentation by one of Lua's creators give more in-depth explanations, with some tips.

The utf8 library can be used to handle UTF-8 encoded unicode text.

Examples

Record and print text the user writes.

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

Print text the user writes, and erase text when backspace is pressed.

local utf8 = require("utf8")

function love.load()
    text = "Type away! -- "
end

function love.textinput(t)
    text = text .. t
end

function love.keypressed(key)
    if key == "backspace" then
        local byteoffset = utf8.offset(text, -1) -- get the byte offset to the last UTF-8 character in the string.

        if byteoffset then
            -- remove the last UTF-8 character.
            text = text:sub(1, byteoffset - 1)
        end
    end
end

function love.draw()
    love.graphics.printf(text, 0, 0, love.graphics.getWidth())
end

See Also


Other Languages