Tutorial:Callback Functions (日本語)
LÖVE においてコールバック関数は全て選択制であり様々な作業を実行するために love.run から呼び出されます。とはいえ、恐らく完全な機能のあるゲーム体験ではほぼ全てを利用するため、それらがなにかを熟知するのは賢明です。
コールバックは、プログラミング未経験または用語に見覚えがない方々への説明としては、ある意味で逆方向に動作する受け身のような関数です。 love.graphics.draw または Lua の math.floor といった攻めに相当する一般的な関数では、それを呼び出すと LÖVE または Lua が呼び出した関数の処理を行いますします。コールバックは、他方では、開発者が処理内容を記述する関数であり、ある条件を満たすと LÖVE が自動的に呼び出します。これはあなたのコードを組織化および最適化の維持を容易にします。例えば、 love.load はゲームが最初に開始された時に一度だけ呼び出されるため (他の全てのコールバックの前に)、ゲーム・コンテンツの読み込みおよびその他何らかの準備を行うコードを置くには適している場所です。
Contents
love.load
function love.load()
image = love.graphics.newImage("cake.jpg")
love.graphics.setNewFont(12)
love.graphics.setColor(0,0,0)
love.graphics.setBackgroundColor(255,255,255)
end
ゲームが開始された時に、この関数は一度だけ呼び出されるため、通常はリソースの読み込み、変数の初期化および特定の設定を設定する場所です。それら全てはその他のどの様な場所でも同様に行うことはできますが、ここで行うことでそれらが一度だけ行われること意味するため、多くのシステム・リソースの節約になります。
love.update
function love.update(dt)
if love.keyboard.isDown("up") then
num = num + 100 * dt -- これは num を 1 秒ごとに 100 加算します。
end
end
この関数は継続的に呼び出されます。よって、恐らくほとんどのあなたの計算を済ませる場所になります。 'dt' は"デルタ・タイムの意味でありこの関数が以前に呼び出された時からの経過時間を秒数にて表しています (通常は 0.025714 のような小さな値です)。
love.draw
function love.draw()
love.graphics.draw(image, imgx, imgy)
love.graphics.print("Click and drag the cake around or use the arrow keys", 10, 10)
end
love.draw
は描画の全てが起こる場所であり(まだ十分にそれが明白ではないならば)この関数の外部で任意の love.graphics.draw
のうちどれかを呼び出した場合でもそれらの効果は一切ありません。この関数に関しても継続的に呼び出されるため関数の終わりでフォント・配色・モード(方式)・などを変更する場合に関数の始まりのものに影響することに留意してください。例えば:
function love.load()
love.graphics.setColor(0,0,0)
end
function love.draw()
love.graphics.print("This text is not black because of the line below", 100, 100)
love.graphics.setColor(255,0,0)
love.graphics.print("This text is red", 100, 200)
end
love.mousepressed
LÖVE 0.10.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
function love.mousepressed(x, y, button, istouch)
if button == 1 then
imgx = x -- クリックされた場所へ画像を移動します。
imgy = y
end
end
この関数はマウスのボタンが押されてボタンおよび押された場所の座標を受信する場合は常に呼び出されます。 button は押された任意のボタンの索引でありえます。この関数は love.mousereleased
との併用で非常に上手く動作します。
love.mousereleased
LÖVE 0.10.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
function love.mousereleased(x, y, button, istouch)
if button == 1 then
fireSlingshot(x,y) -- この全くもって素晴らしいカスタム関数は他の所へ定義されます。
end
end
この関数はマウスのボタンが離されてボタンおよび離された場所の座標を受信する場合は常に呼び出されます。この関数は love.mousepressed
と併用または独立して扱うこともできますが、それはいかなるの方法であっても接続されません。
love.keypressed
function love.keypressed(key)
if key == 'b' then
text = "The B key was pressed."
elseif key == 'a' then
a_down = true
end
end
この関数はキーボードのキーが押されて押されたキーを受信する場合は常に呼び出されます。key は 定数 のいずれかです。この関数は love.keyreleased
との併用で非常に上手く動作します。
love.keyreleased
function love.keyreleased(key)
if key == 'b' then
text = "The B key was released."
elseif key == 'a' then
a_down = false
end
end
この関数はキーボードのキーが離されて離されたキーを受信する場合は常に呼び出されます。この関数は love.keypressed
との併用または独立して扱うこともできますが、それはいかなるの方法であっても接続されません。
love.focus
function love.focus(f)
if not f then
print("LOST FOCUS")
else
print("GAINED FOCUS")
end
end
この関数は利用者が LÖVE のウィンドウおよびその外をクリックしたときに呼び出されます。例えば、ウィンドウ表示のゲームで遊んでいるときに、利用者がインターネット・ブラウザーをクリックした場合に、それがゲームへ通知されゲームは自動的に一時停止することができます。
function love.focus(f) gameIsPaused = not f end
function love.update(dt)
if gameIsPaused then return end
-- ここへあなたの love.update のコードを記載してください。
end
love.quit
function love.quit()
print("Thanks for playing! Come back soon!")
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