2014-10-28 5 views
0

그래서이 종류의 게임을 소개하고 약간의 이미지 로고가 사라지게하고 싶습니다.하지만 지금까지 시도한 모든 것이 보존되어 있습니다. 어떤 시점에서 충돌 할 무한 루프가 제대로 실행되지 않거나, 페이드 인하거나 페이드 아웃하지 않습니다. 도움을 많이 주시면 감사하겠습니다. 또한 getAlpha() setAlpha() 메소드를 사용하고 있습니다.타이머를 사용하여 이미지의 페이드 인 및 페이드 아웃

timer.schedule(new TimerTask() 
    { 
     @Override 
     public void run() 
     { 
      { 

       if(opening1.getAlpha() <1) 
       { 
       System.out.println(opening1.getAlpha()); 
       opening1.setAlpha((float) (opening1.getAlpha() + 0.00005)); 
       } 
       else 
       { 
        timer.purge(); 
       } 
      } 
     } 

    },1*1,100); 
    } 
+0

불투명도 값을 조정하고 다시 칠하기 트리거하려면'javax.swing.Timer'를 사용하십시오. 다시 페인트 할 때 불투명도 값을 존중해야합니다. – Robin

+1

지금까지 시도한 것을 보여주십시오. http://stackoverflow.com/tour를 자세히 읽고 [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 게시하십시오. – ericbn

+0

타이머를 사용해 보았지만 루프를 계속 사용하여 끝내는 방법을 찾지 못했습니다. – Ian

답변

1

당신은 java.lang.Math 클래스를 사용해 보았습니까? "exp (double a)"메서드 사용을 권장합니다. System.currentTimeMillis() 또는 System.nanoTime()과 쌍을 이루면 루프 내에서 호출 할 수 있으며 "이중 값의 제곱으로 올림 된 오일러의 숫자 e를 반환합니다."

지수 함수는 자연스럽게 천천히 커지기 때문에 함수의 속도가 빨라지려면 상수의 배수를 사용합니다. 분명히이 함수에서 얻은 값을 가져 와서 setAlpha() 메서드에서 사용하면됩니다.

게임을 프로그래밍 할 때 항상 수학 수업을 사용합니다. 또 다른 도움이되는 것은 sin() 및 cos() 메소드입니다.

이 접근법을 수정하려면 루프 앞의 초기 시간을 설정하고 0이라고 말한 다음 루프를 통해 반복 할 때마다 현재 시스템 시간을 추가하십시오.