Home E-Books Special Effects and Game Development in Java A configurable TextScroller

Special Effects and Game Development in Java(TM) - A configurable TextScroller (TextScroller II)

by Anibal Wainstein

4.2.2 A configurable TextScroller (TextScroller II)

As you may remember, the textscroller i chapter 3 was flimmering. We can fix it now that we know the double buffering technique. At the same time we make it more configurable. Let us start by adding and modifying some variables first:

public Thread animationthread = null;
public String message;
public int x=100;
Image bufferimage;
Graphics bufferg;
//The following colors are fetched as
//HEXADECIMAL parameters and are used
//to set the background and text color
//of the applet.
Color backgroundcolor,textcolor;
//The "delay" variable is used as a delay
//for each picture frame.
int delay=0;

We have added some variables to set the background and foreground colors. The "delay" variable will be the delay in the animation, as it was in the slideshow applet. Do not forget to paste the getIntegerParameter() method. The init() method must also be altered a bit:

public void init()
{
//We read the message as a parameter instead at the same
   //time as we read a paramter called "delay" for the
    //picture delay.
    message=getParameter("message");
    delay=getIntegerParameter("delay",10);
    //Please note that we read the values in
     //HEXADECIMAL form (with the base 16)
    //and then create a color.
    backgroundcolor=
        new Color(getIntegerParameter("backgroundcolor",16));
    textcolor=new Color(getIntegerParameter("textcolor",16));
    //The following lines are just copied from
    //slideshow2.java
    Dimension d=size();
    bufferimage=createImage(d.width,d.height);
    bufferg=bufferimage.getGraphics();
}

Please note that we get the colors for the applet with the getIntegerParameter() method and specifying that we want to read them in the number base 16, instead of 10. This is done so that these parameters can be specified with hexadecimal numbers by the applet user. The parameters could then look like this:

<APPLET CODE="textscroller2.class" WIDTH=100 HEIGHT=20>
<PARAM name="message" 
value="This is textscroller II, now configurable">
<PARAM name="backgroundcolor" value="ff0000">
<PARAM name="textcolor" value="0000ff">
<PARAM name="delay" value="50">
</APPLET>

We have set the background color to red (FF0000) and the text color to blue (0000FF). If you are not used to hexadecimal color values then maybe the following table may be useful:

Red FF0000
Green 00FF00
Blue 0000FF
Cyan 00FFFF
Yellow FFFF00
Magenta FF00FF
Black 000000
Dark Gray 7F7F7F
Light Gray AFAFAF
White FFFFFF
Orange FF7F00
Dark red 7F0000
Dark green 007F00
Dark blue 00007F

All the drawing in the paint() method must be done in the buffer, instead of directly in the applet screen. When it is finished, then the buffer is displayed on the screen:

public synchronized void paint(Graphics g)
{
     //It is always a good idea to check
    //that bufferg has been initialized.
    if (bufferg!=null)
    {
   //Paint the screen with the fetched
        //background color.
        bufferg.setColor(backgroundcolor);
        bufferg.fillRect(0,0,100,20);
      //Draw the message starting from
        //position "x".
        bufferg.setColor(textcolor);
        bufferg.drawString(message,x,12);
        g.drawImage(bufferimage,0,0,this);
        if (x<-400) x=100;
        x--;
    }
}

Note that we use the variables "backgroundcolor" and "textcolor" to specify the background color and the text color for the applet. Finally we make a small change in the run() method so that the frame delay for the applet can be set:

public void run()
{
   while (true)
    {
        update(getGraphics());
          //The "delay" variable now makes
        //the delay configurable.
        try {Thread.sleep(delay);}
       catch(InterruptedException e) {}
    }
}

Now the applet is ready. You should know that the text's length is limited and the applet dimensions must be 100x20 pixels. It does not make sense to change the dimensions right now, when you cannot control the text size anyway. You will learn this in chapter 6. Click here to see the applet.

Now you may feel ready to start your own Java company and flood the Internet with your applets, after this chapter. You would even now manage rather well as a special effects programmer, but there are some pieces left in your education. Some of them we will review in the next chapter which is about mouse messages.

 

 

 


Next Page >>