mercredi 14 novembre 2007

Charger un TiledLayer en J2me


Un TiledLayer est un élément visuel composé d'une grille de cellules qui peuvent être remplis d'un ensemble de parties d'images.
Cette technique est couramment utilisée pour la réalisation de jeux java 2D sur téléphone .

Le code source suivant est celui de la classe DemoCanvas.java, pour pouvoir tester cet exemple et le faire fonctionner il faudra penser à créer une midlet qui fera appel à cette classe, je suppose que c'est assez simple donc nous n'allons pas en parler ici.

Code source J2me :



package exemple2;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.io.IOException;
/**
*
* @author java-Mobile
*/
public class DemoCanvas extends GameCanvas {

/** Creates a new instance of DemoCanvas */
protected DemoCanvas() {
super(true);
initLayer();
drawBackground();
}

public void initLayer() {

int backgroundWidth = 10;
int backgroundHeight = 10;
int tileWidth = 32;
int tileHeight = 32;
Image tilesImage = null;
try {
tilesImage = Image.createImage("/exemple2/modele.png");
} catch (IOException ex) {
throw new RuntimeException ("Unable to load Image - "+ex);
}
TiledLayer tiledLayer = new TiledLayer(
backgroundWidth, backgroundHeight,
tilesImage, tileWidth, tileHeight);

int[] map = {
1 , 5 , 5 , 5 , 5 , 5 , 5 , 4 , 4 , 4 ,
4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 4 ,
4 , 5 , 5 , 5 , 2 , 2 , 5 , 5 , 5 , 4 ,
4 , 5 , 5 , 5 , 2 , 2 , 5 , 5 , 5 , 4 ,
4 , 4 , 5 , 5 , 2 , 2 , 5 , 5 , 5 , 4 ,
4 , 4 , 4 , 5 , 5 , 2 , 2 , 2 , 5 , 4 ,
1 , 1 , 3 , 3 , 5 , 5 , 2 , 2 , 5 , 4 ,
3 , 1 , 3 , 3 , 3 , 5 , 5 , 5 , 5 , 4 ,
3 , 1 , 1 , 3 , 3 , 3 , 5 , 5 , 1 , 1 ,
3 , 3 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 3 ,
3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
for (int y=0; y
for (int x=0; x
tiledLayer.setCell(y, x, map[y*backgroundWidth+x]);
}
}

setTiledLayer(tiledLayer);
}

public void drawBackground() {

// Get off-screen buffer
Graphics g = getGraphics();

// Clear the background
g.setColor(BACKGROUND_COLOR);
g.fillRect(0, 0, getWidth(), getHeight());

// Paint the tiled layer
TiledLayer tiledLayer = getTiledLayer();
if(tiledLayer != null) {
tiledLayer.paint(g);
}
}

public TiledLayer getTiledLayer() {
return tiledLayer;
}


public void setTiledLayer(TiledLayer tiledLayer) {
this.tiledLayer = tiledLayer;
}


private TiledLayer tiledLayer;

public static final int BACKGROUND_COLOR = 0x00000000;

}

Plus d'infos sur la Class TiledLayer

Aucun commentaire: