자바

 

 

 

 

 

class ImageAnim

package java11;

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;

import javax.imageio.ImageIO;

//이미지 애니메이션 처리
//애플릿: 웹 브라우저에서 실행되는 자바 프로그램

public class ImageAnim extends Applet implements Runnable{
	
	Image[] images ; 
	int idx=0;
	
	//애플릿을 초기화시킴
	@Override
	public void init() {
		// TODO Auto-generated method stub
		super.init();
		
		images=new Image[10];
		for(int i=0; i<images.length ; i++){
			//duke1.gif ~ duke10.gif 이미지를 로딩
			//images[i]=Toolkit.getDefaultToolkit().getImage(getClass().getResource("duke" +(i+1)+".gif"));
			try{
			
				File file=new File("./java11/duke"+i+".gif");
				images[i] =ImageIO.read(file);
				
			}catch (Exception e) {
				e.printStackTrace();
			}
			
		}	
		setSize(500, 200);//애플릿의 화면 사이즈 설정
		
		Thread th=new Thread(this);
		th.start(); //백그라운드 스레드 실행 요청 =>run()이 실행
	}
	
	
	
	
	//애플릿이 그려질 때 자동 호출
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		
		g.drawImage(images[idx], 90, 73, null);
		
/*		for(int i=0; i<images.length; i++){
			g.drawImage(images[i], i*40, 73, null);
		}*/
	}



	@Override
	public void run() {
		
		while(true){
			idx++;//이미지의 인덱스 증가 처리
			if(idx>=10)idx=0;//인덱스가 0 ~9 를 계속 반복하도록 처리
			repaint(); // 화면 갱신 요청 =>paint() 호출
			try{
				Thread.sleep(10);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		
	}
	
	
}






 

 

 

 

 

더블버퍼링

 

 

 

class ImageAnim2

 

package java11;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;

import javax.imageio.ImageIO;


//* 더블 버퍼링
// 더블버퍼링을 사용한 프레임 애니메이션
public class ImageAnim2 extends Applet implements Runnable{

	Image[] images;
	int idx;
	Image offImage;// 백그라운드 이미지 (버퍼 영역)
	Graphics bg; //백그라운드 영력에 그래픽 처리를 위한 객체
	
	@Override
	public void init() {
		super.init();
		
		images =new Image[10];
	    Dimension dim =getSize(); //화면 사이즈 정보
		//백그라운드 이미지 영역 생성
		offImage =createImage(dim.width, dim.height);
		//백그라운드 화면에 그래픽 처리할 객체 생성
		bg=offImage.getGraphics();
		for(int i=0; i<images.length ; i++){
			//duke1.gif ~ duke10.gif 이미지를 로딩
			//images[i]=Toolkit.getDefaultToolkit().getImage(getClass().getResource("duke" +(i+1)+".gif"));
			try{
			
				File file=new File("./java11/duke"+i+".gif");
				images[i] =ImageIO.read(file);
				
			}catch (Exception e) {
				e.printStackTrace();
			}
			
		}	
		setSize(200, 200);//애플릿의 화면 사이즈 설정
	
		Thread th =new Thread(this);
		th.start();
	}
	
	
	@Override
	public void run() {
		while(true){
			idx++;//이미지의 인덱스 증가 처리
			if(idx>=10)idx=0;//인덱스가 0 ~9 를 계속 반복하도록 처리
			repaint(); // 화면 갱신 요청 =>paint() 호출
			try{
				Thread.sleep(10);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}

	
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		//백그라운드 영역에 그래픽 처리
		bg.setColor(Color.yellow);
		bg.fillRect(0, 0, getWidth(), getHeight());
		bg.drawImage(images[idx], 90, 30, null);
		//백그라운드 이미지를 현재 그래픽 화면에 복사 
		g.drawImage(offImage, 0, 0, null);
		
		//g.drawImage(images[idx], 90, 73, null);
	}
	
	

	
}

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

남산골 샌님이 역적 바라듯 한다 , 가난한 사람이 엉뚱한 일을 바라는 경우를 이르는 말.

댓글 ( 4)

댓글 남기기

작성