Laufschriften
Mit diesem Applet lassen sich unterschiedliche
Laufschriften erzeugen. Wenn nur der Parameter
'Text' für den Laufschrifttext angegeben
wird, dann sieht das so aus:
Man kann allerdings auch noch andere Parameter
einstellen, um z.B. so ein Ergebnis zu erzeugen:
Und das ist der ganze Quelltext (auch zum
download):
/*
*
* Copyright (c) 1996 - 1998
* Frank Buss (fb@frank-buss.de), Stephan Schloepke (stephan@nordrhein.net)
*
* This applet was published in the book:
*
* "Programmier Training Java, In 15 Stunden topfit"
* ISBN 3-8158-1303-4
* Authors: Frank Buss, Stephan Schloepke
* Data Becker Verlage (http://www.databecker.de)
*
* You can get this applet and more at http://www.frank-buss.de
*
*/
//
// Ein Laufschrift-Applet
//
import java.applet.*;
import java.awt.*;
public class Laufschrift extends Applet implements Runnable {
private Thread Animation;
private Image Buffer;
private Graphics gBuffer;
private char [] laufText;
private int textHoehe;
private int textPos;
private int pixelPos;
private double sin=0.0;
private double sinOff=1 * Math.PI / 180;
private int yZentrum;
private int sinAmp;
private double zeichenOff;
private int textBreite;
public void start() {
if (Animation == null) {
Animation = new Thread (this);
Animation.start();
}
}
public void stop() {
if (Animation != null) {
Animation.stop();
Animation = null;
}
}
public void run() {
while (true) {
try {
Animation.sleep (10);
} catch (Exception e) { }
repaint();
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
g.drawImage (Buffer,0,0, this);
zeichneLaufschrift();
}
private String getStringParam(String name, String standardWert) {
String param=getParameter(name);
if (param==null) return standardWert;
return param;
}
private int getIntParam(String name, int standardWert) {
String param=getParameter(name);
if (param==null) return standardWert;
return (Integer.parseInt(param,10));
}
public void init() {
setBackground(Color.white);
String text=getStringParam("Text","KEIN TEXT IN DER HTML SEITE !!! ");
String fontName=getStringParam("Zeichensatz","Courier");
int fontGroesse=getIntParam("ZeichenGroesse",12);
sinOff=getIntParam("SinusOffset",2) * Math.PI / 180;
zeichenOff=getIntParam("ZeichenOffset",15) * Math.PI / 180;
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();
gBuffer.setFont(new Font(fontName,Font.PLAIN,fontGroesse));
textHoehe=gBuffer.getFontMetrics().getHeight();
textBreite=gBuffer.getFontMetrics().getMaxAdvance();
sinAmp=(size().height-textHoehe)/2;
yZentrum=(size().height+textHoehe)>>1;
laufText=new char[text.length()];
text.getChars(0,text.length(),laufText,0);
}
private void zeichneLaufschrift() {
gBuffer.setColor(getBackground());
gBuffer.fillRect(0,0,size().width,size().height);
gBuffer.setColor(getForeground());
pixelPos--;
if (pixelPos<0) {
textPos++;
if (textPos>=laufText.length) textPos=0;
pixelPos=textBreite;
}
int tPos=textPos;
for (int pixPos=pixelPos;pixPos<=size().width+textBreite;pixPos+=textBreite) {
if (tPos==laufText.length) tPos=0;
int yPos = yZentrum + (int) (sinAmp * Math.sin (sin+tPos*zeichenOff));
int xPos=pixPos-(gBuffer.getFontMetrics().charWidth(laufText[tPos])>>1);
gBuffer.drawChars(laufText,tPos,1,xPos,yPos);
tPos++;
}
sin += sinOff;
}
}
11. November 1999, Frank Buß