Как остановить мерцание фонового изображения апплета?
Поэтому я добавил фоновое изображение в апплет и теперь всякий раз, когда я пытаюсь запустить его
апплет фоновое изображение начинает мерцать, я добавил еще
изображения и кнопка поверх фона-это то, что вызывает мерцание
или что-то не так с моим кодом?
import java.applet.Applet; import java.awt.event.*; import java.awt.*; import java.awt.Color; //<applet code="game" width="500" height="500"> public class game extends Applet implements Runnable { //interface for thread int x = 350, y = 10,z=10,n=0; Image bal,a,bg; Boolean flag=true,arr=false; Button b; String str="SCORE : "; Label l; public void start() { try { MediaTracker tracker = new MediaTracker (this); bg= getImage(getDocumentBase(),"bg.jpg"); //setting background tracker.addImage(bg, 0); } catch (Exception e) {} bg= getImage(getDocumentBase(),"bg.jpg"); //get background bal=getImage(getDocumentBase(),"balloon.png"); //get balloon a=getImage(getDocumentBase(),"arrow.png"); //get arrow new Thread(this).start(); b=new Button("SHOOT"); add(b); b.addActionListener(new ActionListener(){ //perform this when clicked public void actionPerformed(ActionEvent e) { arr=true; }}); setSize(500, 500); setBackground(Color.white); } public void run() { while (true) { if(arr) { updates(); } update(); try { Thread.sleep(25); //making thread sleep } catch (InterruptedException ex) {} if(z>300) { arr=false; z=10; } if(z+70>=x && (y>=200 && y<=300)) { n=n+10; showStatus("HIT!"); public void updates(){ //increments the arrow z+=25; repaint(); } public void update() { //increments the balloon if(flag) { y += 6; } else { y -= 6; } //decrements the balloon if(y>450) flag=false; if(y<10) flag=true; repaint(); } public void paint(Graphics g) { g.drawImage(bg,0,0,500,500,this); g.drawImage(bal,x, y, 75, 75,this); g.drawImage(a,z+10,250,70,50,this); g.drawString(str+n,220,480); }}
Что я уже пробовал:
Я понятия не имею, чем это вызвано..
Richard MacCutchan
Возможно, вы слишком часто или слишком быстро обновляете изображения.
SagarRawat
какие изменения я должен внести в свой код?
А мерцание происходит только тогда, когда есть фоновое изображение.
Спасибо.
Richard MacCutchan
Я все еще думаю, что это частота, с которой вы перекрашиваете экран. Вам нужно проверить, как часто это происходит, и можете ли вы уменьшить это до числа, которое предотвращает мерцание.
SagarRawat
Ну, я думаю, что понял это, я исказил изображение BG до меньшего размера, что вызвало мерцание. Я изменил высоту и ширину апплета на разрешение изображения, и теперь там очень мало мерцаний...
Спасибо за помощь, Тхо.
Gerry Schmitz
Я согласен с Ричардом. У вас есть цикл while, который, вероятно, выполняет избыточные обновления, что вызывает "мерцание" и влияет на производительность (потому что обновления пользовательского интерфейса медленнее, чем общая обработка).
SagarRawat
Ну, я думаю, что понял это, я исказил изображение BG до меньшего размера, что вызвало мерцание. Я изменил высоту и ширину апплета на разрешение изображения, и теперь там очень мало мерцаний...
Спасибо за помощь, Тхо.