Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 11-26-2009, 07:20 AM
SwEeTAcTioN's Avatar
Member
 
Join Date: Oct 2009
Posts: 66
Rep Power: 0
SwEeTAcTioN is on a distinguished road
Default Fish animation
So i drew a fish with awt an i made him move kinda and thats the problem the fish justs get thicker how do i make it erase the old line

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;

public class Template
{
	public static void main (String args[])
	{
      Windows win = new Windows();
      win.setSize(800,600);
      win.addWindowListener(new WindowAdapter() {public void
      windowClosing(WindowEvent e) {System.exit(0);}});
      win.show();
       }
}

class Windows extends Frame
{
       public void paint(Graphics screen)
       {
    
         Polygon fish= new Polygon();
        
         for(int x1=1;x1<=60;x1++)
         {
         fish.addPoint((130+x1	),150);
         fish.addPoint((125+x1),350);
         fish.addPoint((175+x1),250);
         screen.drawPolygon(fish);
         screen.drawLine((175+x1),250,(250+x1),400);
         screen.drawLine((250+x1),400,(375+x1),275);
         screen.drawLine((375+x1),275,(260+x1),125);
         screen.drawLine((175+x1),250,(260+x1),125);
         screen.drawOval((290+x1),225,50,50);
         screen.setColor(Color.green);
         screen.fillOval((308+x1),242,20,20);
         delay(5000);
         } 
       }
 public static void delay(double d)
     {
     double n;
     for(n=0;(n<=d);n+=.0001);
     } 
/* public static move(int x1)          Comment out Start 
  {
	int move=x1+=1;
	return move;
  }
   public static move2(int x2)
  {
	int move2=x2+=1;
	return move2;                        END(Commment)
  }*/
}
__________________
Are you suggesting that Cocunuts migrate?!! -Monty Python
Bookmark Post in Technorati
Reply With Quote
  #2 (permalink)  
Old 11-26-2009, 09:20 AM
Senior Member
 
Join Date: Jul 2009
Posts: 231
Rep Power: 1
camickr is on a distinguished road
Default
I have no idea why you are using AWT. These days everybody uses Swing. So I would start by reading the Custom Painting section from the Swing tutorial for the proper way to do this in Swing.

Also, check out the Swing Timer for a better way to do animation.
Bookmark Post in Technorati
Reply With Quote
  #3 (permalink)  
Old 11-26-2009, 10:13 AM
Senior Member
 
Join Date: Nov 2009
Posts: 155
Rep Power: 1
collin389 is on a distinguished road
Default
Heres how I did it:

Code:
   import java.io.*;
   import java.util.Random;
   import java.text.DecimalFormat;
   import javax.swing.*;
   import java.awt.*;
   import java.awt.event.*;
   import java.awt.Color;

    public class Template
      {
       public static void main (String args[])throws IOException
         {
         Windows win = new Windows();
         win.setSize(800,600);
         win.addWindowListener(
                               new WindowAdapter() {
                                  public void
                                  windowClosing(WindowEvent e) {
                                    System.exit(0);}});
         win.show();
         }
      }

    class Windows extends Frame
      {
       public void paint(Graphics screen)
         {
         for(int x1=1;x1<=60;x1++)
            {
            Polygon fish= new Polygon();
            fish.addPoint((125+x1),150);
            fish.addPoint((125+x1),350);
            fish.addPoint((175+x1),250);
            screen.clearRect(0,0,800,600);
            screen.drawPolygon(fish);
            screen.drawLine((175+x1),250,(250+x1),400);
            screen.drawLine((250+x1),400,(375+x1),275);
            screen.drawLine((375+x1),275,(260+x1),125);
            screen.drawLine((175+x1),250,(260+x1),125);
            screen.drawOval((290+x1),225,50,50);
            screen.setColor(Color.green);
            screen.fillOval((308+x1),242,20,20);
            delay(5000);
            }
         
         } 
       public static void delay(double d)
         {
         double n;
         for(n=0;(n<=d);n+=.0001)
            ;
         } 
   /* public static move(int x1)           //comment out start
   {
   int move=x1+=1;
   return move;                           
   }
   public static move2(int x2)
   {
   int move2=x2+=1;
   return move2;
   }*/                                         // comment out end
      }
This way is very bad in my opinion because you aren't clearing the Graphics, you just keep adding to it.
Bookmark Post in Technorati
Reply With Quote
  #4 (permalink)  
Old 11-30-2009, 11:56 AM
Member
 
Join Date: Nov 2009
Posts: 7
Rep Power: 0
macason is on a distinguished road
Default
IMO,
1. Clear the screen after each render
2. Don't loop to cause a delay create a timer thread and sleep it for the time needed to delay the rendering or use another lib that can give the appropriate functionality. (how do you stop the application ? by crashing it)
Bookmark Post in Technorati
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] Fish animation SwEeTAcTioN New To Java 2 11-26-2009 07:23 AM
need help about animation ? h9h Java 2D 1 10-30-2009 12:41 PM
Animation Synchronization dreadrocksean Advanced Java 5 08-08-2008 03:56 AM
GUI Animation serfster New To Java 2 06-11-2008 04:37 AM
Animation with Animated GIF JavaBean Java 2D 1 06-07-2007 06:11 PM


All times are GMT +2. The time now is 02:19 PM.



VBulletin, Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2009, Crawlability, Inc.
Copyright ©2006 - 2007, www.java-forums.org