Java Application Örnekleri : Java`da Görüntü Haraketleri

advertisement
Java'da Görüntü Haraketleri
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.
www.dersmax.com
Java'da Görüntü Haraketleri
1
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){
www.dersmax.com
Java'da Görüntü Haraketleri
2
Java'da Görüntü Haraketleri
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
www.dersmax.com
Java'da Görüntü Haraketleri
3
Download