Difference between revisions of "Tutorial:Using Input (日本語)"
m |
m |
||
Line 1: | Line 1: | ||
− | LÖVE による入力イベントの捕獲は本当に簡単です。この[[:Category:Tutorials | + | LÖVE による入力イベントの捕獲は本当に簡単です。この[[:Category:Tutorials|教本]]ではオブジェクト・メソッドと[[:Category:Callbacks (日本語)|コールバック]]の両方を使用してキーボードおよびマウスのイベントを捕獲する方法を包含しています。大抵は空の LÖVE プログラムから書くことにより教本を開始します: |
<source lang="lua"> | <source lang="lua"> | ||
local text | local text |
Revision as of 07:56, 26 August 2016
LÖVE による入力イベントの捕獲は本当に簡単です。この教本ではオブジェクト・メソッドとコールバックの両方を使用してキーボードおよびマウスのイベントを捕獲する方法を包含しています。大抵は空の LÖVE プログラムから書くことにより教本を開始します:
local text
function love.load()
love.graphics.setNewFont(12)
text = "Nothing yet"
end
function love.update(dt)
end
function love.draw()
love.graphics.print( text, 330, 300 )
end
キーボード・イベントの捕獲
利用者がキーを押しているかどうかを検知する最も簡単な方法は love.keyboard.isDown
メソッドを呼び出すことであり、それは下記の構文になります:
love.keyboard.isDown( key )
引数 key は文字列表現であり指定したキーが現在押されているかどうか確認します。単純な用例は:
if love.keyboard.isDown( " " ) then
text = "The SPACE key is held down!"
end
キーの完全な一覧はこちらにあります。この確認を行う最良の場所は love.update
コールバックの内側です: 利用者からの入力を取得および画面へなにかを描画する前に変数の更新を行うことができます。従って、修正後の love.update
コールバックはこのような内容になります:
function love.update(dt)
if love.keyboard.isDown( " " ) then
text = "The SPACE key is held down!"
end
end
どのキーまたは現在押されているキーを検知する必要がある間ならば、これは申し分なく非常に良いものであり、特定のキーが押された、および・または、離されたときに様々な動作を指定する必要がある場合があります。このための簡潔な方法は love.keypressed
および love.keyreleased
キーボード専用コールバックを使用することです。それは既に存じている love.update
または love.draw
コールバックと同様の方法で動作を行い、イベントが発生するごとに対象のコードを実行します。例えば:
function love.keypressed( key )
if key == "return" then
text = "RETURN has been pressed!"
end
end
function love.keyreleased( key )
if key == "return" then
text = "RETURN has been released!"
end
end
確認できる通り、これら二種類のコールバックは指定されたキーが押された、離されたか双方であるかどうかを確認するために使用することができる変数 key を提供します。この時点で、ソース・ファイルはこのように記述されているべきです:
function love.load()
love.graphics.setFont(12)
text = "Nothing yet"
end
function love.update(dt)
if love.keyboard.isDown( " " ) then
text = "The SPACE key is held down!"
end
end
function love.draw()
love.graphics.print( text, 330, 300 )
end
function love.keypressed( key )
if key == "return" then
text = "RETURN is being pressed!"
end
end
function love.keyreleased( key )
if key == "return" then
text = "RETURN has been released!"
end
end
マウス・イベントの捕獲
さて、キーボードにより利用者と対話する方法を既に存じています。しかし、机上に鎮座する小型齧歯類に関してはどうでしょうか? さて、マウスの入力動作は同様の方法です: love.mouse.isDown
メソッドおよび love.mousepressed
および love.mousereleased
コールバックがあります。さあ、 love.update
コールバックへ数行書き加えましょう:
if love.mouse.isDown("r") then
text = "Right mouse button has been pressed"
end
確認できる通り、 love.keyboard.isDown
と非常に似ており、さらに、こちらでマウスに関連する引数の全一覧を参照することができます。このメソッドでマウス・ホイールが上方向または下方向へ回転されたかどうかを確認することができます。ゲームのウィンドウ内にあるマウス・ポインターの現在位置を検知するための二つの手軽なメソッドがあります: love.mouse.getX
および love.mouse.getY
です。それぞれマウス・ポインターの現在座標を返します。さあ、 love.update
コールバックの最初へ、これらの行を追加した用例を見てみましょう:
mouse_x = love.mouse.getX()
mouse_y = love.mouse.getY()
また、この行は love.update
コールバックへ追加します:
love.graphics.print( "Mouse X: ".. mouse_x .. " Mouse Y: " .. mouse_y, 10, 20 )
love.mousepressed
および love.mousereleased
コールバックはキーボードに非常に似たメソッドであり相当品として動作します:
function love.mousepressed(x, y, button)
if button == 'l' then
text = "Left mouse button has been pressed"
end
end
function love.mousereleased(x, y, button)
if button == 'l' then
text = "Left mouse button has been released"
end
end
このコールバックにおける冷静な特徴はボタンが押されたことを検知できるだけではなく利用者がボタンが押した時にマウスポインタの位置も検知できることです。これはマウスと対話可能なボタンまたはその他のオブジェクトといったいくつかの基本的なユーザ・インタフェース要素を構築する必要がある場合は実に有用です。簡単な用例:
function love.mousepressed(x, y, button)
if button == 'l' then
text = "Left mouse button has been pressed at X:"..x.." Y: "..y
end
end
最後に、さらに二つの有用なマウス関連のメソッドがあります: love.mouse.setVisible
および love.mouse.isVisible
です。一つめはマウス・ポインターの表示または非表示を行い、二つめはマウス・ポインターが表示されているかどうかを検出します。さあ、 love.keypressed
コールバックへさらにコードを追加しましょう:
if key == 'h' then
if love.mouse.isVisible() then
love.mouse.setVisible(false)
else
love.mouse.setVisible(true)
end
-- または:
-- love.mouse.setVisible(love.mouse.isVisible() ではありません)
end
これらの数行においてマウス・ポインターが表示されているかどうか確認を行い、次に表示状態を変更します: 表示されている場合は非表示に、表示されていない場合は表示します。全く簡単、ではない?
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info