1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PlaydateAdvent Calendar 2022

Day 17

【Playdate】入力した文字をQRコード化して表示する

Last updated at Posted at 2022-12-18

前回作成した文字入力のプロジェクトを更にカスタマイズして、入力した文字列を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へ代入しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?