/*** * * Copyright (C) 2008 Alessandro La Rosa * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact: alessandro.larosa@gmail.com * * Author: Alessandro La Rosa */ import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; public class ExplodingImageCanvas extends Canvas implements Runnable { int width = 0; int height = 0; ExplodingImage[] images = null; int explodingIndex = 0; boolean explodesEnded = false; public ExplodingImageCanvas() { this.width = getWidth(); this.height = getHeight(); try { images = new ExplodingImage[3]; this.images[0] = new ExplodingImage(Image.createImage("/image1.png"), ExplodingImage.DEFAULT_LEVEL, 2, 2); this.images[1] = new ExplodingImage(Image.createImage("/image2.png"), ExplodingImage.DEFAULT_LEVEL, 4, 4); this.images[2] = new ExplodingImage(Image.createImage("/image3.png"), ExplodingImage.DEFAULT_LEVEL, 8, 8); images[0].explode(2000L); } catch(Exception e) { e.printStackTrace(); } new Thread(this).start(); } protected void keyPressed(int arg0) { if(explodesEnded) { for(int i = images.length - 1; i >= 0; i--) { images[i].ended = false; } explodesEnded = false; explodingIndex = 0; images[explodingIndex].explode(2000L); } } protected void paint(Graphics g) { g.setColor(0xffffff); g.fillRect(0, 0, width, height); if(explodesEnded) { g.setColor(0x000000); g.drawString("Press a key to restart", width / 2, height / 2, Graphics.BASELINE | Graphics.HCENTER); } else { for(int i = images.length - 1; i >= 0; i--) { //images[i].paint(g, width / 2, height / 2, Graphics.HCENTER | Graphics.VCENTER); images[i].paint(g, width / 2, height / 2, Graphics.HCENTER | Graphics.VCENTER); } } } public void run() { while(true) { repaint(); if(images[explodingIndex].ended) { if(explodingIndex < images.length - 1) { explodingIndex++; images[explodingIndex].explode(2000L); } else { explodesEnded = true; } } try { synchronized(this) { wait(50L); } } catch(Exception e) { e.printStackTrace(); } } } }