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 16

【Playdate】文字入力用のキーボードを表示する

Posted at

Playdateには文字入力機構も備わっていて以下キャプチャのようなiOSのデートピッカーのように上下で文字切り替え・入力できる機構が利用できます。
非常に簡単に実装できるので簡単に紹介します。

main.lua
import "CoreLibs/object"
import "CoreLibs/graphics"
import "CoreLibs/sprites"
import "CoreLibs/timer"

import "CoreLibs/keyboard"

local gfx <const> = playdate.graphics

local inputText = "Edit PressA" -- 編集テキスト

function myGameSetUp()
	-- キーボード: 文字変更時実行
	playdate.keyboard.textChangedCallback = function()
		inputText = playdate.keyboard.text
		gfx.sprite.redrawBackground()
	end
	
	-- キーボード: 変更終了時実行
	playdate.keyboard.keyboardDidHideCallback = function()
		print(playdate.keyboard.text)
	end
	
	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
	
	gfx.sprite.update()
	playdate.timer.updateTimers()
end

キーボードAPIを使うには"CoreLibs/keyboard"をimportします。
キーボードの表示はplaydate.keyboard.show([初期値])を実行します。
今回はAボタンを押すとキーボードを表示するようにしました。

キー入力中の値を取得するにはplaydate.keyboard.textChangedCallbackで実行したいコールバック関数を記述します。
キー入力している値はplaydate.keyboard.textで取得できます。

キーボードを非表示した時にはplaydate.keyboard.keyboardDidHideCallbackでコールバック関数を記述します。
他にも以下のコールバック関数が存在します。

playdate.keyboard.keyboardDidShowCallback:キーボードが表示された時
playdate.keyboard.keyboardWillHideCallback([bool]):キーボードを非表示する直前に呼び出す。引数はtrueがOKを押した時、falseがそれ以外の時
playdate.keyboard.keyboardAnimatingCallback:キーボードが表示/非表示アニメーションする際に呼び出す

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?