前回作成した文字入力のプロジェクトを更にカスタマイズして、入力した文字列をQRコード化して表示をしてみます。
キーボード入力終了後に、QRコードを生成し表示します。
main.lua
import "CoreLibs/object"
import "CoreLibs/graphics"
import "CoreLibs/sprites"
import "CoreLibs/timer"
import "CoreLibs/keyboard"
import "CoreLibs/qrcode"
local gfx <const> = playdate.graphics
local inputText = "Edit PressA"
local qrImage = nil
local qrSprite = nil
function QRDone(image, errorMessage)
qrImage = image
end
function myGameSetUp()
-- キーボード: 文字変更時実行
playdate.keyboard.textChangedCallback = function()
inputText = playdate.keyboard.text
gfx.sprite.redrawBackground()
end
-- キーボード: 変更終了時実行
playdate.keyboard.keyboardDidHideCallback = function()
print(playdate.keyboard.text)
gfx.generateQRCode(inputText, nil, QRDone) -- QRコードを生成する
end
-- QRコードのsprite設置
qrSprite = gfx.sprite.new( qrImage )
qrSprite:moveTo( 70, 120 )
qrSprite:add()
gfx.sprite.setBackgroundDrawingCallback(
function( x, y, width, height )
gfx.drawText(inputText, 20, 20)
end
)
end
myGameSetUp()
function playdate.update()
-- Aボタン: 文字入力
if playdate.buttonIsPressed(playdate.kButtonA) then
playdate.keyboard.show(inputText)
end
qrSprite:setImage(qrImage) -- QRコード画像をセットする
gfx.sprite.update()
playdate.timer.updateTimers()
end
QRコードを使用するにはimport "CoreLibs/qrcode"
でコアライブラリからQRコード用のAPIをimportします。
次にplaydate.keyboard.keyboardDidHideCallback
のタイミングでQRコード生成を行います。
gfx.generateQRCode()
の第一引数にQRコードに変換したい文字列、第二引数にQRコードのサイズ指定(nilで最適化サイズ)、第三引数で生成完了後のコールバック関数を指定します。
ここではQRDone
というコールバック関数を指定し、中では生成後の画像(第一引数image)を表示用変数のqrImage
へ代入しています。