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){ 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 ş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.
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();
}
}
java.util.Timer t=new java.util.Timer();
TimerTask task=new TimerTask(){
public void run(){
x2++;
y2++;
repaint();
}
};
t.schedule(task,0,100);
Hem olayla hem de zamanlayıcıyla hareket eden iki resmi içeren bir örnek : package com.godoro.samples.awt; public class ImageMoveCanvas
import java.awt.*;
import java.awt.event.*;
import java.util.*;
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