Els sprites són element que representen una imatge flotant. Això els fa molt adequats per representar personatges.
Els sprites tenen un mètode onLoad, que ens permet carregar la imatge que han de mostrar. En la majoria dels casos ens interessarà que sigui una imatge en format PNG i amb el fons transparent.
... @override FutureonLoad() async { super.onLoad(); sprite = await game.loadSprite('bola.png'); ... } ...
Els sprites tenen un mètode update, que ens és útil quan necessitem que es moguin al llarg del temps. Aquest mètode té un paràmetre anomenat dt que correspon al concepte de durada del fotograma. Llavors, sabent la velocitat vectorial, podem calcular la nova posició.
...
@override
void update(double dt) {
super.update(dt);
position += velocity * dt;
}
...
Els mètodes onDragUpdate (corresponent al ratolí) i moveBy (corresponent al teclat) permeten definir el moviment del component.
En aquest apartat del joc de trencar totxos podem veure un exemple d'ús dels sprites.
Quan un programa té uns quants sprites, ens pot interessar posar-los tots en un sol fitxer gràfic i agafar cada element a partir de les seves coordenades.
...
@override
Future<void> onLoad() async {
super.onLoad();
sprite = Sprite(
game.images.fromCache('sheet.png'),
srcPosition: Vector2(256, 320), // Coordenades inici bola
srcSize: Vector2(64, 64), // Mida de la bola
);
...
}
...
Cal, però, que el fitxer de gràfics hagi estat carregat prèviament.
En aquest apartat del joc de trencar totxos podem veure un exemple en el qual es fa servir un full d'imatges per a diversos sprites.
Podem fer que un component desaparegui quan ja no és necessària la seva presència. Podem posar la instrucció en la definició de les col·lisions del component.
...
@override
void onCollisionStart(
...
removeFromParent();
...
En alguns casos, però, ens caldrà eliminar altres components que no són el que ha detectat la col·lisió. Llavors cal anar a l'arbre del joc a cercar l'element.
... game.world.removeAll(game.world.children.query<Bola>()); ...
Important: Els elements són eliminats a l'acabar el fotograma actual, abans de començar el següent. Això vol dir que just després de les instruccions removeFromParent, RemoveEffect i removeAll el component encara hi és.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.