Thread: Picture help
View Single Post
  #14 (permalink)  
Old 06-03-2008, 06:46 PM
deathnote11 deathnote11 is offline
Member
 
Join Date: May 2008
Posts: 7
deathnote11 is on a distinguished road
Okay So, I've managed to get it to work, but then sometimes
it doesn't create the images smoothly..
What can I do to make it produce the pictures smoothly?
Code:
import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import javax.swing.*; import java.lang.*; import java.util.Timer; import java.util.TimerTask; import java.awt.event.*; //action listener. import java.util.*; class DdrJ implements ActionListener, KeyListener { int depth=1; ArrayList Alist = new ArrayList() ImageIcon bgIMAGE = new ImageIcon (getClass().getResource("test2G.gif")); ImageIcon p4IMAGE = new ImageIcon(getClass().getResource("p4.gif")); ImageIcon p4ModIMAGE = new ImageIcon(getClass().getResource("p4Mod.gif")); JLabel bgL ; int x; int y; APane pane; JButton btn2 = new JButton("coordinates"); public static void main(String[] args) { new DdrJ(); } DdrJ() { x=10; y=10; JFrame gameFrame = new JFrame("DdrJ"); pane = new APane(x, y, new JLabel( new ImageIcon(getClass().getResource("p4.gif"))) ); gameFrame.setContentPane(pane); pane.setLayout(null); Insets insets = pane.getInsets(); //backgroudn pic and size JLabel bgL = new JLabel(bgIMAGE,new Integer(0)); Dimension bgSIZE = bgL.getPreferredSize(); //region pic and size JLabel regL = new JLabel(p4ModIMAGE,new Integer(10)); Dimension regSIZE = regL.getPreferredSize(); //set where it is regL.setBounds(300,300+insets.top,regSIZE.width,regSIZE.height); bgL.setBounds(0+insets.left,0+insets.top,bgSIZE.width,bgSIZE.height); pane.add(bgL, new Integer(0)); pane.add(regL,new Integer(1)); // label = new JLabel(image); // label2 = new JLabel( new ImageIcon(getClass().getResource("test1G.gif") ) ); gameFrame.addKeyListener(this); pane.addKeyListener(this); gameFrame.setSize(500,500); gameFrame.setVisible(true); gameFrame.setSize(500,500); gameFrame.setVisible(true); for(int i=0;i<100;i++) { try { Thread.sleep(500); make(); } catch(Exception w) { } } pane.requestFocus(); } public void keyTyped ( KeyEvent p ) { } public void keyPressed ( KeyEvent p) { if(p.getKeyCode()==KeyEvent.VK_UP) { try { } catch(Exception m) { } for(int i=0;i<Alist.size();i++) { if( ((UP)(Alist.get(i) ) ).getY()>=250 ) { System.out.println("________________________"); if( ((UP)(Alist.get(i))).getY() >=260 && ((UP)(Alist.get(i))).getY()<=290 ) { System.out.println("Too early"); ( (UP)Alist.get(i) ).quick(); ( (UP)Alist.get(i) ).stop(); Alist.remove(i); } else if( ((UP)(Alist.get(i))).getY() >=290 && ((UP)(Alist.get(i))).getY()<=300 ) { System.out.println("Hit right on"); ( (UP)Alist.get(i) ).quick(); ( (UP)Alist.get(i) ).stop(); Alist.remove(i); } else if( ((UP)(Alist.get(i))).getY() >=300 && ((UP)(Alist.get(i))).getY()<=320 ) { System.out.println("A little too late"); ( (UP)Alist.get(i) ).quick(); ( (UP)Alist.get(i) ).stop(); Alist.remove(i); } } if( ((UP)(Alist.get(i) ) ).getY()>=500 ) { ( (UP)Alist.get(i) ).quick(); ( (UP)Alist.get(i) ).stop(); Alist.remove(i); } System.out.println(Alist.size()); } } } public void keyReleased ( KeyEvent p ) { } public void make() { try { pane.labChng( new JLabel(new ImageIcon(getClass().getResource("p4.gif")))); pane.add(pane.label,new Integer(depth)); UP arrow1 = new UP(pane); Alist.add(arrow1); ( (UP)Alist.get(Alist.size()-1) ).start(); depth++; } catch(Exception ex) { } pane.requestFocus(); } public void actionPerformed(ActionEvent e) { pane.requestFocus(); } } class APane extends JLayeredPane { int x=500; int y=250; JLabel label; APane(int x, int y, JLabel label) { this.x=x; this.y=y; this.label=label; } public void labChng(JLabel lab) { this.label=lab; } } class UP extends Thread { APane pane; UP(APane pane) { pane = new APane(pane.x,pane.y,pane.label); this.pane=pane; } public void run() { try { while(pane.y<400) { move(10); } } catch(Exception ex) { } quick(); stop(); System.gc(); } void move(int delay) throws InterruptedException { Thread.currentThread().sleep(delay); Insets insets=pane.getInsets(); Dimension size = pane.label.getPreferredSize(); pane.y++; pane.label.setBounds(300,pane.y+insets.top,size.width,size.height); } public void quick() { pane.label.setIcon(null); } public int getY() { return pane.y; } }

Thanks!
Reply With Quote