Ich hab schon vieles ausprobiert und nichts klappt. Hab die Lust verloren weiter selber zu suchen, vielleicht könnte
mir jemand helfen. Die Methode "titelAnim" müsste in einem Thread ablaufen damit ich sie später abrufen kann
nachdem ein Intro gelaufen ist. Hab schon einige mal probiert das als Thread zu machen aber er kommt
mit der Grafik nicht klar.
mir jemand helfen. Die Methode "titelAnim" müsste in einem Thread ablaufen damit ich sie später abrufen kann
nachdem ein Intro gelaufen ist. Hab schon einige mal probiert das als Thread zu machen aber er kommt
mit der Grafik nicht klar.
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Thread;
import java.awt.image.ImageObserver;
public class Projekt extends Applet implements MouseMotionListener, MouseListener
{
Image imageSchrift, backgroundImage;
Image Menu1, Menu2, Menu3, Menu4;
int xposSchrift = 0;
int xpos2=0;
//Double Buffer
private Image dbImage;
private Graphics dbg;
int backImageWidth = 848;
int backImageHeigh = 478;
public void init()
{
Menu1 = getImage(getCodeBase(), "Menu1.gif");
Menu2 = getImage(getCodeBase(), "Menu3.gif");
this.addMouseMotionListener(this);
this.addMouseListener(this);
resize(848, 478);
}
public void start(){}
public void stop(){}
public void destroy(){}
public void paint (Graphics g)
{
backgroundImage = getImage (getCodeBase(), "title.jpg");
imageSchrift = getImage (getCodeBase (), "schrift.gif");
titelAnim(g);
}
public void mouseDragged (MouseEvent e){}
public void mouseMoved (MouseEvent e)
{
int xPosMenu1 = ((this.getWidth()/2) - (Menu1.getWidth(this)/2));
int yPosMenu1 = ((this.getHeight()/2) - Menu1.getHeight(this));
int xPosMenu2 = ((this.getWidth()/2) - (Menu2.getWidth(this)/2));
int yPosMenu2 = ((this.getHeight()/2) - Menu2.getHeight(this) + 50);
if(e.getX() > xPosMenu1 && e.getY() > yPosMenu1 && e.getX() < xPosMenu1 + Menu1.getWidth(this) &&
e.getY() < yPosMenu1 + Menu1.getHeight(this))
{
Menu1 = getImage(getCodeBase(), "Menu2.gif");
repaint();
} else {
Menu1 = getImage(getCodeBase(), "Menu1.gif");
repaint();
}
if(e.getX() > xPosMenu2 && e.getY() > yPosMenu2 && e.getX() < xPosMenu2 + Menu2.getWidth(this) &&
e.getY() < yPosMenu2 + Menu2.getHeight(this))
{
Menu2 = getImage(getCodeBase(), "Menu4.gif");
repaint();
} else {
Menu2 = getImage(getCodeBase(), "Menu3.gif");
repaint();
}
}
public void titelAnim(Graphics g)
{
while (backImageHeigh > 150)
{
g.drawImage(backgroundImage, 0, 0, this);
g.drawImage(imageSchrift, xposSchrift, 0, backImageWidth, backImageHeigh, this);
backImageWidth = backImageWidth - 35;
backImageHeigh = backImageHeigh - 20;
xposSchrift = xposSchrift + 17;
repaint();
StopThread(15);
};
g.drawImage(backgroundImage, 0, 0, this);
g.drawImage(imageSchrift, xposSchrift, 0, backImageWidth, backImageHeigh, this);
g.drawImage(Menu1, ((this.getWidth()/2)-(Menu1.getWidth(this)/2)) , ((this.getHeight()/2) - Menu1.getHeight(this)), this);
g.drawImage(Menu2, ((this.getWidth()/2) - (Menu2.getWidth(this)/2)), ((this.getHeight()/2) - Menu2.getHeight(this)) + 50, this);
}
public void StopThread(int StopZeit)
{
try
{
Thread.sleep(StopZeit);
} catch (InterruptedException e) {}
}
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
paint (dbg);
g.drawImage (dbImage, 0, 0, this);
}
public void mouseClicked (MouseEvent e){}
public void mouseEntered (MouseEvent e){}
public void mouseExited (MouseEvent e){}
public void mousePressed (MouseEvent e){}
public void mouseReleased (MouseEvent e){}
}