Difference between revisions of "Tutorial:Callback Functions (한국어)"

Line 1: Line 1:
 
LÖVE의 [[:Category:Callbacks|콜백]] 함수들은 [[love.run]]에 의해 여러가지 작업을 수행하기 위해 호출되며 모두 꼭 있어야 하는 것은 아닙니다. 그러나, 모든 기능이 갖춰진 게임은 이것들을 거의 모두 사용하니 이것들이 무엇인지 알아두는 것이 좋을 겁니다.
 
LÖVE의 [[:Category:Callbacks|콜백]] 함수들은 [[love.run]]에 의해 여러가지 작업을 수행하기 위해 호출되며 모두 꼭 있어야 하는 것은 아닙니다. 그러나, 모든 기능이 갖춰진 게임은 이것들을 거의 모두 사용하니 이것들이 무엇인지 알아두는 것이 좋을 겁니다.
  
A callback, for those new to programming or otherwise unfamiliar with the term, is a function which works backwards in a sense. In a regular function like [[love.graphics.draw]] or math.floor, you call it and Love or Lua does something. A callback, on the other hand, is a function that you code and Love calls at certain times. This makes it easy to keep your code organized and optimal. For example, since love.load will only get called once when the game is first started (before any other callback), it's a fine place to put code which loads game content and otherwise prepares things.
+
프로그래밍이 처음이거나 이 단어에 익숙하지 않은 분들을 위해 설명하자면, 콜백은 무대 뒤쪽에서 일합니다. [[love.graphics.draw]]math.floor과 같은 일반적인 함수들은 Love나 Lua에서 호출할 수 있습니다. 반면에, 콜백은 당신의 코드가 잘 짜여지게 합니다. 예를 들어, love.load가 게임이 처음 시작할 때(그 어떤 콜백보다도 먼저) 실행되기 때문에, 여기에는 게임을 불러오고 여러가지를 준비하는 코드를 놓는 것이 좋습니다.
  
 
==[[love.load]]==
 
==[[love.load]]==
Line 13: Line 13:
 
end
 
end
 
</source>
 
</source>
This function gets called only once, when the game is started, and is usually where you would load resources, initialize variables and set specific settings. All those things can be done anywhere else as well, but doing them here means that they are done once only, saving a lot of system resources.  
+
이 함수는 게임이 시작될 때 가장 먼저 실행됩니다. 그리고 이것은 보통 리소스를 불러오고, 변수를 초기화하고 설정하는데 사용됩니다. 이것들은 다른 곳에서도 할 수 있지만, 이것을 단 한번만 한다는 것은 시스템 자원을 많이 아낄 수 있다는 것을 뜻합니다.
  
 
==[[love.update]]==
 
==[[love.update]]==
Line 23: Line 23:
 
end
 
end
 
</source>
 
</source>
This function is called continuously and will probably be where most of your math is done. 'dt' stands for "[[love.timer.getDelta|delta time]]" and is the amount of seconds since the last time this function was called (which is usually a small value like 0.025714).
+
이 함수는 반복해서 실행되고 당신의 계산이 여기서 끝날 것입니다.(주: 뭔 소린지 모르겠습니다. 원문은 This function is called continuously and will probably be where most of your math is done. 입니다.) dt는 "[[love.timer.getDelta|델타 시간]]"을 의미하고 전에 이 함수가 실행된지 얼마나 지났는지를 의미합니다. (대부분 이것은 0.025714와 같은 아주 작은 값입니다.)
  
 
==[[love.draw]]==
 
==[[love.draw]]==
Line 32: Line 32:
 
end
 
end
 
</source>
 
</source>
<code>[[love.draw]]</code> is where all the drawing happens (if that wasn't obvious enough already) and if you call any of the <code>[[love.graphics.draw]]</code> outside of this function then it's not going to have any effect. This function is also called continuously so keep in mind that if you change the font/color/mode/etc at the end of the function then it will have a effect on things at the beginning of the function. For example:  
+
 
 +
<code>[[love.draw]]</code>는 뭔가 그리는(이미 그려져 있지 않다면) 곳입니다. 당신이 <code>[[love.graphics.draw]]</code>의 코드를 이 함수 밖에서 실행한다면 아무일도 일어나지 않을 겁니다. 이 함수는 계속 실행되므로 당신이 폰트//모드/기타 등등을 이곳의 함수 내에서 바꾼다면 함수가 다시 시작할 때 영향을 미칠 것입니다. 예를 들면:
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
Line 54: Line 55:
 
end
 
end
 
</source>
 
</source>
This function is called whenever a mouse button is pressed and it receives the button and the coordinates of where it was pressed. The button can be any of the [[MouseConstant|constants]]. This function goes very well along with <code>[[love.mousereleased]]</code>.  
+
이 함수는 마우스 버튼이 눌렸을 때 실행되며 어떤 버튼이 눌렸는지, 좌표는 어디인지를 반환합니다. 마우스 버튼 값에 대해서는 [[MouseConstant|상수]]가 반환됩니다. 이 함수는 <code>[[love.mousereleased]]</code>와 비슷합니다.
  
 
==[[love.mousereleased]]==
 
==[[love.mousereleased]]==

Revision as of 01:43, 19 January 2013

LÖVE의 콜백 함수들은 love.run에 의해 여러가지 작업을 수행하기 위해 호출되며 모두 꼭 있어야 하는 것은 아닙니다. 그러나, 모든 기능이 갖춰진 게임은 이것들을 거의 모두 사용하니 이것들이 무엇인지 알아두는 것이 좋을 겁니다.

프로그래밍이 처음이거나 이 단어에 익숙하지 않은 분들을 위해 설명하자면, 콜백은 무대 뒤쪽에서 일합니다. love.graphics.draw나 math.floor과 같은 일반적인 함수들은 Love나 Lua에서 호출할 수 있습니다. 반면에, 콜백은 당신의 코드가 잘 짜여지게 합니다. 예를 들어, love.load가 게임이 처음 시작할 때(그 어떤 콜백보다도 먼저) 실행되기 때문에, 여기에는 게임을 불러오고 여러가지를 준비하는 코드를 놓는 것이 좋습니다.

love.load

function love.load()
   image = love.graphics.newImage("cake.jpg")
   local f = love.graphics.newFont(12)
   love.graphics.setFont(f)
   love.graphics.setColor(0,0,0,255)
   love.graphics.setBackgroundColor(255,255,255)
end

이 함수는 게임이 시작될 때 가장 먼저 실행됩니다. 그리고 이것은 보통 리소스를 불러오고, 변수를 초기화하고 설정하는데 사용됩니다. 이것들은 다른 곳에서도 할 수 있지만, 이것을 단 한번만 한다는 것은 시스템 자원을 많이 아낄 수 있다는 것을 뜻합니다.

love.update

function love.update(dt)
   if love.keyboard.isDown("up") then
      num = num + 100 * dt -- this would increment num by 100 per second
   end
end

이 함수는 반복해서 실행되고 당신의 계산이 여기서 끝날 것입니다.(주: 뭔 소린지 모르겠습니다. 원문은 This function is called continuously and will probably be where most of your math is done. 입니다.) 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

function love.mousepressed(x, y, button)
   if button == 'l' then
      imgx = x -- move image to where mouse clicked
      imgy = y
   end
end

이 함수는 마우스 버튼이 눌렸을 때 실행되며 어떤 버튼이 눌렸는지, 좌표는 어디인지를 반환합니다. 마우스 버튼 값에 대해서는 상수가 반환됩니다. 이 함수는 love.mousereleased와 비슷합니다.

love.mousereleased

function love.mousereleased(x, y, button)
   if button == 'l' then
      fireSlingshot(x,y) -- this totally awesome custom function is defined elsewhere
   end
end

This function is called whenever a mouse button is released and it receives the button and the coordinates of where it was released. You can have this function together with love.mousepressed or separate, they aren't connected in any way.


love.keypressed

function love.keypressed(key, unicode)
   if key == 'b' then
      text = "The B key was pressed."
   elseif key == 'a' then
      a_down = true
   end
end

This function is called whenever a keyboard key is pressed and receives the key that was pressed. The key can be any of the constants. This functions goes very well along with love.keyreleased.

love.keyreleased

function love.keyreleased(key, unicode)
   if key == 'b' then
      text = "The B key was released."
   elseif key == 'a' then
      a_down = false
   end
end

This function is called whenever a keyboard key is released and receives the key that was released. You can have this function together with love.keypressed or separate, they aren't connected in any way.

love.focus

function love.focus(f)
  if not f then
    print("LOST FOCUS")
  else
    print("GAINED FOCUS")
  end
end

This function is called whenever the user clicks off and on the LOVE window. For instance, if he is playing a windowed game and a user clicks on his Internet browser, the game could be notified and automatically pause the game.

function love.focus(f) gameIsPaused = not f end

function love.update(dt)
	if gameIsPaused then return end

	-- The rest of your love.update code goes here
end

love.quit

function love.quit()
  print("Thanks for playing! Come back soon!")
end

This function is called whenever the user clicks the windows close button (often an X). For instance, if the user decides he is done playing, he could click the close button. Then, before it closes, the game can save its state.

Those are the callback functions and their basic usage.



Other languages