Difference between revisions of "love"

m (Callback only works in main thread)
 
(20 intermediate revisions by 6 users not shown)
Line 1: Line 1:
此模块包含所有其他模块。
+
When beginning to write games using LÖVE, the most important parts of the API are the callbacks: [[love.load]] to do one-time setup of your game, [[love.update]] which is used to manage your game's state frame-to-frame, and [[love.draw]] which is used to render the game state onto the screen.
最美模块非它莫属。
+
  
当你使用LÖVE编写游戏时,需要了解这几个最重要的API回调函数:
+
More interactive games will override additional callbacks in order to handle input from the user, and other aspects of a full-featured game.
[[love.load]]会初始化加载您的游戏,它仅会被执行一次,
+
[[love.update]]用来管理与更新你的游戏的每一帧的状态,
+
[[love.draw]]用来渲染屏幕。
+
  
若为游戏增加互动性还会有很多额外的回调函数需要重写,用来处理来自用户的输入去完善一个健全的游戏或是其他的方案。
+
LÖVE provides default placeholders for these callbacks, which you can override inside your own code by creating your own function with the same name as the callback:
 
+
LÖVE提供了默认的空回调函数,你可以在你自己的代码里重写这些函数,只需通过指定对应的回调函数名:
+
  
 
<source lang="lua">
 
<source lang="lua">
 +
-- Load some default values for our rectangle.
 
function love.load()
 
function love.load()
  hamster = love.graphics.newImage("hamster.png")
+
    x, y, w, h = 20, 20, 60, 20
  x = 50
+
  y = 50
+
 
end
 
end
 +
 +
-- Increase the size of the rectangle every frame.
 +
function love.update(dt)
 +
    w = w + 1
 +
    h = h + 1
 +
end
 +
 +
-- Draw a coloured rectangle.
 
function love.draw()
 
function love.draw()
  love.graphics.draw(hamster, x, y)
+
    love.graphics.setColor(0, 0.4, 0.4)
 +
    love.graphics.rectangle("fill", x, y, w, h)
 
end
 
end
 
</source>
 
</source>
Line 32: Line 34:
 
| ?PrettySince
 
| ?PrettySince
 
| ?PrettyRemoved
 
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 
}}
 
}}
 +
 +
== Third-party modules ==
 +
{{#ask: [[Category:Libraries]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 +
== Functions ==
 +
{{#ask: [[Category:Functions]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 
== Types ==
 
== Types ==
 
{{#ask: [[Category:Types]] [[parent::love]] [[Concept:Current]]
 
{{#ask: [[Category:Types]] [[parent::love]] [[Concept:Current]]
Line 43: Line 73:
 
| ?PrettySince
 
| ?PrettySince
 
| ?PrettyRemoved
 
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 
}}
 
}}
 +
 
== Callbacks ==
 
== Callbacks ==
{{#ask: [[Category:Callbacks]] [[parent::love]] [[Concept:Current]]
+
All callbacks are only called in main thread.
 +
=== General ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::General]] [[parent::love]] [[Concept:Current]]
 
| headers=hide
 
| headers=hide
 
| format=template
 
| format=template
Line 54: Line 88:
 
| ?PrettySince
 
| ?PrettySince
 
| ?PrettyRemoved
 
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 
}}
 
}}
 +
 +
=== Window ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::Window]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 +
=== Keyboard ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::Keyboard]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 +
=== Mouse ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::Mouse]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 +
=== Joystick ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::Joystick]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 +
=== Touch ===
 +
{{#ask: [[Category:Callbacks]] [[Subcategory::Touch]] [[parent::love]] [[Concept:Current]]
 +
| headers=hide
 +
| format=template
 +
| template=ListingFields
 +
| introtemplate=ListingIntro
 +
| outrotemplate=ListingOutro
 +
| ?Description
 +
| ?PrettySince
 +
| ?PrettyRemoved
 +
| ?PrettyDeprecated
 +
}}
 +
 
[[Category:Modules]]
 
[[Category:Modules]]
 
{{#set:Description=The root module which contains all the other modules.}}
 
{{#set:Description=The root module which contains all the other modules.}}

Latest revision as of 06:05, 28 March 2019

When beginning to write games using LÖVE, the most important parts of the API are the callbacks: love.load to do one-time setup of your game, love.update which is used to manage your game's state frame-to-frame, and love.draw which is used to render the game state onto the screen.

More interactive games will override additional callbacks in order to handle input from the user, and other aspects of a full-featured game.

LÖVE provides default placeholders for these callbacks, which you can override inside your own code by creating your own function with the same name as the callback:

-- Load some default values for our rectangle.
function love.load()
    x, y, w, h = 20, 20, 60, 20
end
 
-- Increase the size of the rectangle every frame.
function love.update(dt)
    w = w + 1
    h = h + 1
end
 
-- Draw a coloured rectangle.
function love.draw()
    love.graphics.setColor(0, 0.4, 0.4)
    love.graphics.rectangle("fill", x, y, w, h)
end

Modules

love.audio Provides of audio interface for playback/recording sound.
love.data Provides functionality for creating and transforming data. Added since 11.0
love.event Manages events, like keypresses. Added since 0.6.0
love.filesystem Provides an interface to the user's filesystem.
love.font Allows you to work with fonts. Added since 0.7.0
love.graphics Drawing of shapes and images, management of screen geometry.
love.image Provides an interface to decode encoded image data.
love.joystick Provides an interface to connected joysticks. Added since 0.5.0
love.keyboard Provides an interface to the user's keyboard.
love.math Provides system-independent mathematical functions. Added since 0.9.0
love.mouse Provides an interface to the user's mouse.
love.physics Can simulate 2D rigid body physics in a realistic manner. Added since 0.4.0
love.sound This module is responsible for decoding sound files.
love.system Provides access to information about the user's system. Added since 0.9.0
love.thread Allows you to work with threads. Added since 0.7.0
love.timer Provides high-resolution timing functionality.
love.touch Provides an interface to touch-screen presses. Added since 0.10.0
love.video This module is responsible for decoding and streaming video files. Added since 0.10.0
love.window Provides an interface for the program's window. Added since 0.9.0

Third-party modules

lua-enet Multiplayer networking module for games. Added since 0.9.0
socket Module for HTTP, TCP, and UDP networking. Added since 0.5.0
utf8 Provides basic support for manipulating UTF-8 strings. Added since 0.9.2

Functions

love.getVersion Gets the current running version of LÖVE. Added since 0.9.1
love.hasDeprecationOutput Gets whether LÖVE displays warnings when using deprecated functionality. Added since 11.0
love.isVersionCompatible Gets whatever the version is compatible with current running version of LÖVE. Added since 0.10.0
love.setDeprecationOutput Sets whether LÖVE displays warnings when using deprecated functionality. Added since 11.0

Types

Data The superclass of all data.
Object The superclass of all LÖVE types.
Variant The types supported by love.thread and love.event.

Callbacks

All callbacks are only called in main thread.

General

Config Files Game configuration settings.
love.displayrotated Called when the device display orientation changed. Added since 11.3
love.draw Callback function used to draw on the screen every frame.
love.errhand The error handler, used to display error messages. Deprecated in 11.0
love.errorhandler The error handler, used to display error messages. Added since 11.0
love.load This function is called exactly once at the beginning of the game.
love.lowmemory Callback function triggered when the system is running out of memory on mobile devices. Added since 0.10.0
love.quit Callback function triggered when the game is closed. Added since 0.7.0
love.run The main function, containing the main loop. A sensible default is used when left out.
love.threaderror Callback function triggered when a Thread encounters an error. Added since 0.9.0
love.update Callback function used to update the state of the game every frame.

Window

love.directorydropped Callback function triggered when a directory is dragged and dropped onto the window. Added since 0.10.0
love.filedropped Callback function triggered when a file is dragged and dropped onto the window. Added since 0.10.0
love.focus Callback function triggered when window receives or loses focus. Added since 0.7.0
love.mousefocus Callback function triggered when window receives or loses mouse focus. Added since 0.9.0
love.resize Called when the window is resized. Added since 0.9.0
love.visible Callback function triggered when window is shown or hidden. Added since 0.9.0

Keyboard

love.keypressed Callback function triggered when a key is pressed.
love.keyreleased Callback function triggered when a keyboard key is released.
love.textedited Called when the candidate text for an IME has changed. Added since 0.10.0
love.textinput Called when text has been entered by the user. Added since 0.9.0

Mouse

love.mousemoved Callback function triggered when the mouse is moved. Added since 0.9.2
love.mousepressed Callback function triggered when a mouse button is pressed.
love.mousereleased Callback function triggered when a mouse button is released.
love.wheelmoved Callback function triggered when the mouse wheel is moved. Added since 0.10.0

Joystick

love.gamepadaxis Called when a Joystick's virtual gamepad axis is moved. Added since 0.9.0
love.gamepadpressed Called when a Joystick's virtual gamepad button is pressed. Added since 0.9.0
love.gamepadreleased Called when a Joystick's virtual gamepad button is released. Added since 0.9.0
love.joystickadded Called when a Joystick is connected. Added since 0.9.0
love.joystickaxis Called when a joystick axis moves. Added since 0.9.0
love.joystickhat Called when a joystick hat direction changes. Added since 0.9.0
love.joystickpressed Called when a joystick button is pressed.
love.joystickreleased Called when a joystick button is released.
love.joystickremoved Called when a Joystick is disconnected. Added since 0.9.0

Touch

love.touchmoved Callback function triggered when a touch press moves inside the touch screen. Added since 0.10.0
love.touchpressed Callback function triggered when the touch screen is touched. Added since 0.10.0
love.touchreleased Callback function triggered when the touch screen stops being touched. Added since 0.10.0


Other Languages