Konular

Java'da Görüntü Haraketleri

Java'da resim nesnelerinin nasıl haraket ettirildiğine dair bir örnek. Zamanlayıcı kullanımı ve klavyeyi dinlemeye ilişkin kodlar da içeriyor.

Java'da Görüntü Haraketleri

Java'da bir resmin haraeket etmesi, daha önce belli bir konuma yerleştirilmiş bir resmin daha sorna başka bir noktada çizilmesinden ibaretti. Hareketi tetikleyen iki neden olabilir : ya kullanıcı fare veya klavye gibi bir girdi aygıtıyla belli bir değişikliğe neden olur ya da yer değişikliği uygulamanın içinden bir zamanlanlayıcı tarafından gerçekleştirilir.

Olay (Event) Sonucu Resimde Yer Değişikliği

Fare ve klavye kaynaklı değişiklikle, bir olayın dinlenmesi, o olay karşısında konumu belirleyen değişkenlerin değiştirilmesi ve daha sonra resmin tekrar çizilmesinden ibarettir. Örneğitn bir tuşa basıldığında

  public void keyPressed(KeyEvent e){
    int keyCode=e.getKeyCode();
    if(keyCode==KeyEvent.VK_LEFT){
      x1--;
      repaint();
    }else if(keyCode==KeyEvent.VK_RIGHT){
      x1++;
      repaint();
    }else if(keyCode==KeyEvent.VK_UP){
      y1--;
      repaint();
    }else if(keyCode==KeyEvent.VK_DOWN){
      y1++;
      repaint();
    }
  }

biçiminde bir işlem yapılabilir. Burada x1 ve y1 değişkenleri ok tuşlarına göre yeni bir değer almaktadır. Her değişiklikten sonra repaint() yöntemiyle çizimin tekrar yapılması gerekir.

 Zamanlayıcı (Timer) Sonucu Resimde Yer Değişikliği

Hareket değişikliği, belli bir zamana bağlı olarak yapılabilir. Örneğin bir resim 100 milisaniyede bir x ve y yönünde birer pixel artırmak için

    java.util.Timer t=new java.util.Timer();
    TimerTask task=new TimerTask(){
      public void run(){
        x2++;
        y2++;
        repaint();
      }
    };
    t.schedule(task,0,100);  

şeklinde bir kod yazılabilir. Burada Timer nesnesine konum değişikliği yapıp yeniden çizim yapılmasını sağlayan TimerTask örneği schedule() yöntemiyle veriliyor.

Java'da Görüntü Haraketleri

Hem olayla hem de zamanlayıcıyla hareket eden iki resmi içeren bir örnek :

package com.godoro.samples.awt;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class ImageMoveCanvas
  extends Canvas
  implements KeyListener
{  
  private Image image1;
  private Image image2;
  private int x1=0;
  private int y1=0;
  private int x2=50;
  private int y2=50;   
 
  public ImageMoveCanvas(Image image1,Image image2){
    this.image1=image1;
    this.image2=image2;     
    addKeyListener(this);
    java.util.Timer t=new java.util.Timer();
    TimerTask task=new TimerTask(){
      public void run(){
        x2++;
        y2++;
        repaint();
      }
    };
    t.schedule(task,0,100);           
  }
  public void paint(Graphics g){
    g.drawImage(image2,x2,y2,this);
    g.drawImage(image1,x1,y1,this);   
  }       
  public void keyPressed(KeyEvent e){
    int keyCode=e.getKeyCode();
    if(keyCode==KeyEvent.VK_LEFT){
      x1--;
      repaint();
    }else if(keyCode==KeyEvent.VK_RIGHT){
      x1++;
      repaint();
    }else if(keyCode==KeyEvent.VK_UP){
      y1--;
      repaint();
    }else if(keyCode==KeyEvent.VK_DOWN){
      y1++;
      repaint();
    }
  }
  public void keyReleased(KeyEvent e){}
  public void keyTyped(KeyEvent e){}     
 
  public static void main(String[] args){
    Frame frame=new Frame();
    frame.setBounds(10,10,300,300);
    Toolkit toolkit=Toolkit.getDefaultToolkit();
    String folder="E:GoyaJavaDeeplyJavaBookJavaBooktest";
    Image image1=toolkit.getImage(folder+"cat.gif");
    Image image2=toolkit.getImage(folder+"mouse.gif");
    ImageMoveCanvas canvas=new ImageMoveCanvas(image1,image2);       
    frame.add(canvas);
    frame.setVisible(true);
  }
 
}

 

Kaynak www.godoro.com/Portal/Content/Article/ArticleViewPage.aspx

Yorumunuzu Ekleyin

Java'da Analog Saat Örneği

AWT kütüphanesi kullanılarak yapılan Java'da analog bir saat örneği anlatılıyor

30,269 Okunma Henüz yorum yapılmamış 26/01/2009 22:12:54

Java'da Animasyon Örneği

Java'da bir grup resmin artarda hızla gösterilmesi esasına dayanarak canlandırma yapan bir örnek. Resim yüklemeyi ve zamanlayıcı kullanımını da içeriyor.

27,360 Okunma Henüz yorum yapılmamış 26/01/2009 22:15:24

Sayı Tahmin Oyunu

NetBeans Kullanılarak yapılmış, Tarayıcı üzerinden çalışan Applet örneği

20,297 Okunma 1 Yorum 20/11/2008 16:02:36

Mysql'e Bağlanmak

İngilizce bir makale

17,802 Okunma Henüz yorum yapılmamış 24/11/2008 22:57:19

Applet + Java Nesnesi

Applet içerisinde Java Nesnesinin kullanımı

15,860 Okunma Henüz yorum yapılmamış 01/12/2008 15:56:26

Yükleniyor...