|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2008
Messaggi: 125
|
[JAVA] come far apparire un immagine e poi farla scomparire
Allora..sto facendo un videogioco in java..ora se voglio far apparire un oggetto dopo un tot di tempo dall'inizio dell'applicazione..Io ho usato un thread..Vi mostro il codice del metodo run:
Codice:
public void run(){
try {
sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
dis=true;
f.render();
}
}
// f indica il frame dove devo mettere l'immagine
//nel metodo render della classe frame richiamo il thread che si chiama Bonus
public void render(){
if(b.dis){
g.drawImage(bon,100,500,this);
}
}
L'errore che mi da è che se metto la variabile dis non mi appare nemmeno il frame...mentre se la tolgo mi appare il frame con l'immagine..solo che l'immagine appare da subito..ed io voglio farla apparire dopo un pò.. Qualcuno sa aiutarmi??? Grazie infinite!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi farlo con un Thread ma la questione poi diventa piuttosto complicata perchè l'architettura complessiva del tuo motore di gioco diventa concorrente rispetto ad una pipeline di rendering (Swing o AWT) che è specificamente progettata per operare in un contesto sequenziale. Comunque supponendo che tu abbia uno "schermo" su cui disegnare di questa specie:
Codice:
class JCanvas extends JComponent {
private volatile boolean dis;
private final Image bon = new ImageIcon(getClass().getResource("/bonus.png")).getImage();
public void setDisState(boolean value) {
dis = value;
repaint();
}
protected void paintComponent(Graphics graphics) {
if(dis) {
graphics.drawImage(bon, 100, 100, this);
}
}
}
Codice:
new Thread() {
public void run() {
try {
Thread.sleep(DELAY);
} catch(InterruptedException ex) {
return;
}
canvas.setDisState(true);
}
}.start();
Codice:
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
showUI();
}
});
}
private static void showUI() {
final JCanvas canvas = new JCanvas();
canvas.setPreferredSize(new Dimension(640, 480));
JFrame window = new JFrame("Test");
window.add(canvas);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.pack();
window.setVisible(true);
final long DELAY = 1500;
new Thread() {
public void run() {
try {
Thread.sleep(DELAY);
} catch(InterruptedException ex) {
return;
}
canvas.setDisState(true);
}
}.start();
}
}
class JCanvas extends JComponent {
private volatile boolean dis;
private final Image bon = new ImageIcon(getClass().getResource("/bonus.png")).getImage();
public void setDisState(boolean value) {
dis = value;
repaint();
}
protected void paintComponent(Graphics graphics) {
if(dis) {
graphics.drawImage(bon, 100, 100, this);
}
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:23.



















