Spark.java

/**
* Copyright (c) 2012-2013 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. 
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners. 
* See LICENSE.TXT for license information.
*/

package com.nokia.example.explonoid.effects;

import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

/**
 * Generates a spark visual effect.
 * 
 * For usage, see the class SparkManager.
 * 
 * @see com.nokia.example.explonoid.effects.SparkManager
 */
public class Spark
        extends Sprite {

    public static final int COLS = 20;
    public static final int WIDTH = 16;
    public static final int HEIGHT = 16;
    private Timer timer;
    private int dirX = 0;
    private int dirY = 0;

    public Spark(Image spark) {
        super(spark, spark.getWidth() / COLS, spark.getHeight());

        int radius = spark.getHeight() / 2;
        defineReferencePixel(radius, radius);

        timer = new Timer();
        TimerTask fade = new TimerTask() {

            public void run() {
                if (getFrame() < getRawFrameCount() - 1) {
                    move(dirX, dirY);
                    nextFrame();
                }
                else {
                    setVisible(false);
                }
            }
        };
        timer.schedule(fade, 0, 50);
    }

    public void shoot(int posX, int posY, int dirX, int dirY) {
        setPosition(posX, posY);
        this.dirX = dirX;
        this.dirY = dirY;
        setFrame(0);
        setVisible(true);
    }
}