/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
animation kører langsomt på nogle computer~
Fra : Mike Crenshaw


Dato : 05-04-04 21:26

hej
Jeg har lavet en applet som laver en animation.. Problemet er at den kører
fint på nogle computere of meget langsomt på andre. Selv hurtige computere..
(2ghz og på)..

her er hvad jeg gør

private Image background; //544 * 425
private Image object; //66 * 26
private Image doubleBufferImage; //544 * 425
private Graphics doubleBufferGraphics;
private int ox; //new position to draw object
private int oy; //same
....
public void paint(Graphics g) {
doubleBufferGraphics.setClip(0,0,background.getWidth(this),
background.getHeight(this));
doubleBufferGraphics.drawImage(background,0,0,this);
doubleBufferGraphics.setClip(ox, oy, object.getWidth(this),
object.getHeight(this));
doubleBufferGraphics.drawImage(object, ox, oy, this);
g.drawImage(doubleBufferImage, 0, 0, this);
}


nogle ideer?

her er hele test programmet

import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;

public class Test extends Applet implements Runnable, KeyListener{

private Image background;
private Image object;
private Image doubleBufferImage;
private Graphics doubleBufferGraphics;
private MediaTracker tracker;
private int ox;
private int oy;
private Thread t;

public void init() {
tracker = new MediaTracker(this);
background = getImage (getCodeBase (), "background.gif");
object = getImage (getCodeBase (), "object.gif");
tracker.addImage(background,0);
tracker.addImage(object,1);
addKeyListener(this);
try
{
tracker.waitForAll();
}
catch(Exception e){System.out.println("error "+e);}
doubleBufferImage = createImage (background.getWidth(this),
background.getHeight(this));
doubleBufferGraphics= doubleBufferImage.getGraphics ();
}

public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e)
{
t = new Thread(this);
t.start();
}

public void run()
{
for (int i = 0; i < 25; i++)
{
ox +=20;
oy +=15;
paint(getGraphics());
}
ox=0;
oy=0;
}

public synchronized void paint(Graphics g) {
doubleBufferGraphics.setClip(0,0,background.getWidth(this),
background.getHeight(this));
doubleBufferGraphics.drawImage(background,0,0,this);
doubleBufferGraphics.setClip(ox, oy, object.getWidth(this),
object.getHeight(this));
doubleBufferGraphics.drawImage(object, ox, oy, this);
g.drawImage(doubleBufferImage, 0, 0, this);
}}



 
 
Jonas Kongslund (05-04-2004)
Kommentar
Fra : Jonas Kongslund


Dato : 05-04-04 21:48

On Monday 05 April 2004 22:25, Mike Crenshaw wrote:

> hej
> Jeg har lavet en applet som laver en animation.. Problemet er at den kører
> fint på nogle computere of meget langsomt på andre. Selv hurtige
> computere.. (2ghz og på)..

http://java.sun.com/docs/books/tutorial/uiswing/painting/animLoop.html

--
Jonas Kongslund

Mike Crenshaw (05-04-2004)
Kommentar
Fra : Mike Crenshaw


Dato : 05-04-04 23:05

desværre kan jeg ikke bruge swing klasserne da det skal kunne virke med java
1.1



Jonas Kongslund (06-04-2004)
Kommentar
Fra : Jonas Kongslund


Dato : 06-04-04 00:23

On Tuesday 06 April 2004 00:05, Mike Crenshaw wrote:

> desværre kan jeg ikke bruge swing klasserne da det skal kunne virke med
> java 1.1

Hovedideen er stadigvæk den samme uanset om du bruger Java 1.1 eller en
nyere udgave.

--
Jonas Kongslund

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408177
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste