수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

자바 애플릿으로 애니메이션 하려는데 깜빡거림 해결방법은?

각티슈

2023.04.01

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.Timer;

public class zztest_image01 extends Applet implements MouseListener, MouseMotionListener{
public final static long serialVersionUID = 1L;

BufferedImage img;
BufferedImage img2;

private Timer timer;
private final int delay = 20;

boolean firstTime = true;
public int img2_x = 0, img2_y = 0;
public int speedX, speedY;

public void init()
{
addMouseListener( this );
timer = new Timer(delay, new main_anim());
timer.start();
speedX = speedY = 3;
setBackground (Color.black);
setSize(640, 480);

}
public void paint(Graphics g){
g.drawImage(img, 0, 0, null);
if (firstTime){
g.drawImage(img, 0, 0, null);
}
else {
g.drawImage(img2, img2_x, img2_y, null);
}
}
public zztest_image01() {
try {
img = ImageIO.read(new File(images/mainbg.jpg));
} catch (IOException e) {
}
try {
img2 = ImageIO.read(new File(00000.jpg));
} catch (IOException e) {
}
}

public void mousePressed(MouseEvent e){
firstTime = false;
}
public void mouseReleased(MouseEvent e){
if( img2.getMinX() = e.getX() && e.getX() = img2.getMinX() + img2.getWidth()
&& img2.getMinY() = e.getY() && e.getY() = img2.getMinY() + img2.getHeight() ){
img2_x = e.getX();img2_y = e.getY();
repaint();
}
}

// This method required by MouseListener.
public void mouseMoved(MouseEvent e){}
// These methods are required by MouseMotionListener.
public void mouseClicked(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}

public class main_anim implements ActionListener {
public void actionPerformed (ActionEvent event){
img2_x += speedX;
img2_y += speedY;
if (img2_x = 0 || img2_x = 600)speedX = speedX * -1;
if (img2_y = 0 || img2_y = 450)speedY = speedY * -1;
invalidate();
repaint();
}
}
}이런 식으로 drawImage 메소드하고 paint 메소드를사용해서 그림을 그린 다음
Timer와 repaint로 일정 간격마다 그림을 새로 그리게 만들었는데
(중간에 마우스이벤트 메소드도 넣었습니다만 그건 무시하시고 ^^;)
다른 특별한 문제점은 없는데요
애니메이션이 작동하는 동안에 가끔씩 깜빡거리더군요
이 문제를 해결하려면 어떻게 해야 하나요?
혹시 invalidate()를 사용하는건가 해서 저기↑에다 써봤지만 쓰나마나 똑같네요... ^^;;
어디를 수정하면 깜빡거림이 없어질까요?
설마 뜯어고쳐야 되는건가요..?

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 두힘

    감사합니다 ^^ 그리고 drawImage로 이전에 그린 이미지를 지우려면 어떻게 해야 하나요?

  • 김예쁨

    더블버퍼링 하세요. ^^

번호 제 목 글쓴이 날짜
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
2698712 IF 문 이 계속 오류가 나요 (2) 옆집오빠야 2025-06-19
2698687 이미지를 클릭하면 그 이미지를 다운받게해주는 방법 질문요 ^^ (미해결) (5) 해지개 2025-06-19
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com