Mercurial > hg > ristipolku
view game/AnimatedPointElement.java @ 125:054dd486ea84
Add animated point element class.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 24 Nov 2011 19:46:09 +0200 |
parents | |
children | e60b4885eafe |
line wrap: on
line source
/* * Ristipolku animated game element * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org> */ package game; import java.awt.*; import java.awt.geom.*; import java.util.*; import java.math.*; public class AnimatedPointElement { float stime, value; IDMPoint pos; Interpolate lerpV, lerpX, lerpY; boolean active, first; String text; public AnimatedPointElement(IDMPoint p0, IDMPoint p1, float steps, String text) { lerpX = new Interpolate(p0.x, p1.x, steps); lerpY = new Interpolate(p0.y, p1.y, steps); lerpV = new Interpolate(1, 0, steps); System.out.print("AnimatedPointElement("+ p0 +", "+p1+", "+ steps +", '"+ text +"')\n"); System.out.print("lerpX="+lerpX+"\n"); active = false; first = true; this.text = text; } public void animate(float time) { if (first) { first = false; active = true; stime = time; } if (active) { float t = (time - stime) / 10.0f; if (t >= 1.0f) { t = 1.0f; active = false; } value = lerpV.getValue(t); pos.x = lerpX.getValue(t); pos.y = lerpY.getValue(t); } } public void paint(Graphics2D g) { if (!active) return; Paint psave = g.getPaint(); AffineTransform tsave = g.getTransform(); Composite csave = g.getComposite(); // g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, typeValue)); g.setFont(G.fonts[0]); g.setPaint(new Color(1.0f, 1.0f, 1.0f, value)); g.drawString(text, pos.x, pos.y); g.setTransform(tsave); g.setComposite(csave); g.setPaint(psave); } }