2014-10-28 22 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 2014-10-28 16:26:59

+1

告訴我們你到目前爲止嘗試過什麼。仔細閱讀http://stackoverflow.com/tour並嘗試發佈[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – ericbn 2014-10-28 16:28:04

+0

我嘗試使用計時器,但我一直得到循環,我無法弄清楚如何結束它 – Ian 2014-10-28 16:37:55

回答

1

您是否嘗試過使用java.lang.Math類。我會推薦使用「exp(double a)」方法。 與System.currentTimeMillis()或System.nanoTime()配合使用,您可以在循環內調用它,並且它「返回歐拉數e增加到雙值的權力。」

指數函數自然增長緩慢,所以我會用一個常數的倍數來操縱函數增加的速度。顯然你只需要從你的函數中獲得的值,並在你的setAlpha()方法中使用它。

編程我的遊戲時,我一直在使用Math類。另一個有用的是sin()和cos()方法。

爲了完善這種方法,我將在循環前設置一個初始時間,比如說0,然後在循環中每次循環添加當前系統時間。