so, ich schwöre, dass is die letzte frage, die allerletzte^^.
ich hab nun mir vorgenommen, nachdem die ersten blasen die oberfläche erreicht haben(siehe meine anderen beiden posts), ein nebelschleier stückweise aufsteigen zu lassen. naja, im grunde sind es graue striche die länger werden und nach oben gescoben werden. hier der code und was ich bis jetzt probiert habe:
so nun startet die methode startenebelbewegung gleich am start sodass, wenn der nebel gezeichnet wird er bereits die vollen ausmaße besitzt. wenn ich nun in der methode nebelbewegung die variable nebelschleier abfrage(wurde ja auf true gesetzt) werden die koordinaten des nebels nicht verändert.
ich hab nun mir vorgenommen, nachdem die ersten blasen die oberfläche erreicht haben(siehe meine anderen beiden posts), ein nebelschleier stückweise aufsteigen zu lassen. naja, im grunde sind es graue striche die länger werden und nach oben gescoben werden. hier der code und was ich bis jetzt probiert habe:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
public class LakeNyos6 extends JFrame
{
Graphics comp;
public LakeNyos6()
{
super("LAKE NYOS");
setTitle("Lake Nyos");
setSize(1000,1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MapPane LakeNyos1 = new MapPane();
Container content = getContentPane();
content.add(LakeNyos1);
setVisible(true);
LakeNyos1.starteBlasenBewegung1();
LakeNyos1.startenebelbewegung();
}
public static void main(String[] arguments)
{
LakeNyos6 frame = new LakeNyos6();
}
}
class MapPane extends JPanel
{
Graphics comp;
Graphics2D comp1D = (Graphics2D)comp;
private boolean nebelschleier = false;
private boolean menschweg = false;
private boolean startenebel = false;
int blasenzahl = 200;
private float x[];
private float y[];
Color grey = new Color(192,192,191);
int t = 215;
int z = 320;
int u = 605;
int o = 317;
public void starteBlasenBewegung1()
{
x = new float[blasenzahl];
y = new float[blasenzahl];
final float speed[] = new float[y.length];
for (int i=0; i<speed.length; i++)
{
x[i] = 250 + (float)(Math.random()*300);
y[i] = 460 + (float)(Math.random()*20);
speed[i] = 1+(float)(Math.random()*2);
}
Thread t = new Thread(new Runnable()
{
public void run() // Entspricht deiner "aufsteigen"-Methode
{
int finished = 0;
while (finished != y.length)
{
finished = 0;
for (int i=0; i<y.length; i++)
{
if (y[i] >= 320)
{
y[i] -= speed[i];
}
else
{
finished++;
menschweg = true;
nebelschleier = true; // variable für nebel auf true setzen
}
}
repaint();
warten();
}
}
});
t.start();
}
public void gasneben(Graphics comp)
{
if ( nebelschleier)
{
Graphics2D comp2D = (Graphics2D)comp;
comp2D.setColor(grey);
GeneralPath gn = new GeneralPath();
gn.moveTo(t,z);
gn.lineTo(t,o);
gn.lineTo(u,o);
gn.lineTo(u,z);
gn.closePath();
comp2D.fill(gn);
startenebel = true;
}
}
public void startenebelbewegung()
{
Thread c = new Thread(new Runnable()
{
public void run()
{
while ( t> 207 )
{
t = t - 3;
o = o + 3;
warten2();
}
while ( z > 283)
{
z = z - 3;
warten2();
}
while(u < 640)
{
u = u + 3;
warten2();
}
while(o < 280)
{
o = o + 3;
warten2();
}
}
} );
c.start();
}
public void paintComponent(Graphics comp)
{
See(comp);
fuelleSee(comp);
blasen(comp);
gasneben(comp);
krater(comp);
menschen(comp);
totmensch(comp);
}
}
so nun startet die methode startenebelbewegung gleich am start sodass, wenn der nebel gezeichnet wird er bereits die vollen ausmaße besitzt. wenn ich nun in der methode nebelbewegung die variable nebelschleier abfrage(wurde ja auf true gesetzt) werden die koordinaten des nebels nicht verändert.