---
title: "Slö kod?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/57446-slö-kod"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "MMats"
published: "2002-10-29T21:27:57.000Z"
updated: "2003-01-17T16:05:47.000Z"
replies: 1
views: 438
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/57446-slö-kod"
---

# Slö kod?

## #1 — MMats, 2002-10-29T21:27Z

Jag surfade in på <http://bodytag.org> och gillade det jag såg. 

Så jag tänkte varför inte testa att göra det som är gjort med javascript + vml i java. Man kan ju se koden och jag behöver träna lite.

Jag valde Gravity som finns [här](http://www.bodytag.org/gravity/) . 
Nu har jag kodat lite och åstadkommet något som liknar den sidan. Men problemet är att den är grymt långsam. Är det någon som vet varför?

Här är min kod:

```php
import java.awt.*;
import java.applet.Applet;

public class gravity extends Applet implements Runnable{

	Thread runner;
	int wApplet, hApplet;
	Image offscreenImg;
	Graphics offscreen;
	Point mouse = new Point(0,0);
	double birdObj[] = {0, 200, 0, 10, 0};
	double katetX = 0, katetY = 0, hypotenusan = 0;
	int grav = 1;
	int diameter = 10;
	Color bgColor = new Color(100,100,100);
	Color objColor = new Color(34,34,34);
	
	public void init(){
		// ta reda på höjden på appleten
		wApplet = this.getSize().width;
		hApplet = this.getSize().height;
		// Ritbuffer...
		offscreenImg = createImage(wApplet, hApplet);
		offscreen = offscreenImg.getGraphics();		
	}	

	public void start(){
		if(runner==null)
			runner = new Thread(this);
			runner.start();
	}
	
	public void stop(){
		runner = null;
	}
	
	public void run(){
		Thread dennaTrad = Thread.currentThread();
		while(runner==dennaTrad){
			trackFlock();
			repaint();
			
			try{
				Thread.sleep(10);
				}catch (InterruptedException e){}			
		}
	}
	public boolean mouseDown(Event evt, int x, int y){
		grav = -grav;
		return true;
	}
	public boolean mouseUp(Event evt, int x, int y){
		grav = Math.abs(grav);
		return true;
	}
	public boolean mouseMove(Event evt, int x, int y){
		mouse.x = x;
		mouse.y = y;
		return true;
	}
	
	//Huvudslingan
	void trackFlock(){
		katetX = mouse.x - birdObj[0];
		katetY = mouse.y - birdObj[1];
		
		hypotenusan = Math.sqrt(katetX * katetX + katetY * katetY);
		
		birdObj[3] += grav*(katetX/hypotenusan); // (cost[angle]*20)/hypotenusan;
		birdObj[4] += grav*(katetY/hypotenusan); // (sint[angle]*20)/hypotenusan;
		
		if(birdObj[3] > 10) {
			birdObj[3] = 10;
		}else if(birdObj[3] < -10){
			birdObj[3] = -10;
		}
		if(birdObj[4] > 10) {
			birdObj[4] = 10;
		}else if(birdObj[4] < -10){
			birdObj[4] = -10;
		}
		
		birdObj[0] += birdObj[3]*.5;
		birdObj[1] += birdObj[4]*.5;
	}
	
	//överlagra update (nu suddar den inte)
	public void update(Graphics g) {
		paint(g);
	}
	
	public void paint(Graphics g){ 
		//bakgrunden
		offscreen.setColor(bgColor);
		offscreen.fillRect(0, 0, wApplet, hApplet);
		
		//objektet
		offscreen.setColor(objColor);
		offscreen.fillOval((int)birdObj[0]+(diameter/2), (int)birdObj[1]+(diameter/2), diameter, diameter);
		
		//HUD
		offscreen.setColor(Color.green);
		offscreen.drawString("mouse x: "+mouse.x, 10, 20);
		offscreen.drawString("mouse y: "+mouse.y, 10, 30);
		offscreen.drawString("hypotenusan: "+hypotenusan, 10, 40);
		
		//Rita ut allt på skärmen
		g.drawImage(offscreenImg, 0, 0, this);
		
	}	
	
	public void destroy(){
		offscreen.dispose();
	}
}
```

Permalänk: https://www.webforum.nu/p/57446

## #2 — MMats, 2003-01-17T16:05Z

Ingen som kunde svaret på den här? Alternativt peka på var jag får tag på information om det?

Permalänk: https://www.webforum.nu/p/917981

---

Tråden på webben: https://www.webforum.nu/amne/java/57446-slö-kod
