Difference between revisions of "love.graphics.newSpriteBatch (Français)"

(Created page with "Crée un nouvel objet SpriteBatch (macro de sprites). {{newobjectnotice (Français)}} == Fonction == === Synopsis === <source lang="lua"> spriteBat...")
 
(Exemples)
 
Line 87: Line 87:
 
local windowWidth, windowHeight = love.graphics.getDimensions()
 
local windowWidth, windowHeight = love.graphics.getDimensions()
  
-- Fait en sorte que le protagoniste se déplace au sein d'un cercle.
+
-- Le protagoniste se déplace suivant un cercle.
 
local angle  = .4 * love.timer.getTime()
 
local angle  = .4 * love.timer.getTime()
 
protagonist.x = windowWidth/2  + .3*windowWidth  * math.cos(angle)
 
protagonist.x = windowWidth/2  + .3*windowWidth  * math.cos(angle)

Latest revision as of 09:14, 22 August 2021

Crée un nouvel objet SpriteBatch (macro de sprites).

O.png Cette fonction peut être lente si elle est appelée de façon répétée, comme depuis love.update ou love.draw. Si vous devez utiliser souvent une ressource spécifique, créez la une seule fois, et conservez la quelque part, elle peut être réutilisée !  



Fonction

Synopsis

spriteBatch = love.graphics.newSpriteBatch( image, maxsprites )

Arguments

Image (Français) image
Image à utiliser pour les sprites.
number (Français) maxsprites (1000)
Nombre maximum de sprites que le SpriteBatch peut contenir à tout moment. Depuis la version 11.0 de LÖVE, les sprites ajoutés au delà de ce nombre feront automatiquement grossir le spritebatch.

Retourne

SpriteBatch (Français) spriteBatch
Le nouveau SpriteBatch.

Fonction

Disponible depuis LÖVE 0.8.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Synopsis

spriteBatch = love.graphics.newSpriteBatch( image, maxsprites, usage )

Arguments

Image (Français) image
Image à utiliser pour les sprites.
number (Français) maxsprites (1000)
Nombre maximum de sprites que le SpriteBatch peut contenir à tout moment. Depuis la version 11.0 de LÖVE, les sprites ajoutés au delà de ce nombre feront automatiquement grossir le spritebatch.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du SpriteBatch. Le mode d'utilisation spécifié affecte l'utilisation mémoire et les performances du SpriteBatch.

Retourne

SpriteBatch spriteBatch
Le nouveau SpriteBatch.

Fonction

Disponible depuis LÖVE 0.9.1
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Synopsis

spriteBatch = love.graphics.newSpriteBatch( texture, maxsprites, usage )

Arguments

Texture (Français) texture
Image ou Canvas à utiliser pour les sprites.
number (Français) maxsprites (1000)
Nombre maximum de sprites que le SpriteBatch peut contenir à tout moment. Depuis la version 11.0 de LÖVE, les sprites ajoutés au delà de ce nombre feront automatiquement grossir le spritebatch.
SpriteBatchUsage (Français) usage ("dynamic")
Utilisation attendue du SpriteBatch. Le mode d'utilisation spécifié affecte l'utilisation mémoire et les performances du SpriteBatch.

Retourne

SpriteBatch spriteBatch
Le nouveau SpriteBatch.

Exemples

Cet exemple utilise cette image pour tous les graphismes :

spriteBatchExample.png

local entities = {}
local spriteBatch, player

function love.load()
	local image = love.graphics.newImage("spriteBatchExample.png")
	spriteBatch = love.graphics.newSpriteBatch(image)

	local quadPlayer   = love.graphics.newQuad(0,  0,  32, 32, image:getDimensions())
	local quadTree     = love.graphics.newQuad(32, 0,  32, 32, image:getDimensions())
	local quadSign     = love.graphics.newQuad(0,  32, 32, 32, image:getDimensions())
	local quadDogHouse = love.graphics.newQuad(32, 32, 32, 32, image:getDimensions())

	local windowWidth, windowHeight = love.graphics.getDimensions()

	love.graphics.setBackgroundColor(.05, .15, .05)

	-- Déploie de nombreuses choses au hasard sur une grille quelconque.
	for baseY = 0, windowHeight, 30 do
		for baseX = 0, windowWidth, 40 do
			local quad = (
				love.math.random() < .10 and quadSign     or
				love.math.random() < .03 and quadDogHouse or
				quadTree
			)
			table.insert(entities, {
				quad   = quad,
				x      = baseX + math.random(-12, 12),
				y      = baseY + math.random(-8,  8 ),
				serial = #entities,
			})
		end
	end

	-- Déploie un protagoniste.
	protagonist = {quad=quadPlayer, x=0, y=0, serial=#entities} -- We set the position in love.update().
	table.insert(entities, protagonist)
end

function love.update(dt)
	local windowWidth, windowHeight = love.graphics.getDimensions()

	-- Le protagoniste se déplace suivant un cercle.
	local angle   = .4 * love.timer.getTime()
	protagonist.x = windowWidth/2  + .3*windowWidth  * math.cos(angle)
	protagonist.y = windowHeight/2 + .3*windowHeight * math.sin(angle)
end

function love.draw()
	-- Trie les entités par leur position Y.
	table.sort(entities, function(entity1, entity2)
		if entity1.y ~= entity2.y then
			return entity1.y < entity2.y
		end
		return entity1.serial < entity2.serial -- Si Y est le même, utilise le numéro de série comme seconde possibilité.
	end)

	-- Ajoute des entités dans la macro de sprite pour le tracé.
	spriteBatch:clear()
	for _, entity in ipairs(entities) do
		spriteBatch:add(entity.quad, math.floor(entity.x), math.floor(entity.y))
	end

	-- Finalement, trace la macro de sprite à l'écran.
	love.graphics.draw(spriteBatch)
end

Voir également


Autres langues