2012-03-08 54 views
1

我是as3的新手。我在場景中有一個動畫片段。我希望在my_mc淡出時循環播放它,它必須開始淡入,反之亦然。我想循環播放它們。淡出功能首先正常工作。但是如何在淡出之後加載淡入?在循環中播放淡入和淡出

my_mc.addEventListener(Event.ENTER_FRAME, fadeout); 

function fadeout(e:Event){ 
    if(my_mc.alpha >=1){ 
     this.alpha -=0.1; 
     if(my_mc.alpha <=0){ 
      this.removeEventListener(Event.ENTER_FRAME, fadeout); 
     } 
    } 
} 

my_mc.addEventListener(Event.ENTER_FRAME, fadein); 

function fadein(e:Event){ 
    if(my_mc.alpha <=0){ 
     this.alpha +=0.1; 
     if(my_mc.alpha >=1){ 
      this.removeEventListener(Event.ENTER_FRAME, fadein); 
     } 
    } 
} 

回答

3
my_mc.addEventListener(Event.ENTER_FRAME, fadeout); 

function fadeout(e:Event){ 
    if(my_mc.alpha <=0){ 
     my_mc.removeEventListener(Event.ENTER_FRAME, fadeout); 
     my_mc.addEventListener(Event.ENTER_FRAME, fadein); 
    } else { 
     my_mc.alpha -=0.1; 
    } 
} 

function fadein(e:Event){ 
    if(my_mc.alpha >= 1){ 
     my_mc.removeEventListener(Event.ENTER_FRAME, fadein); 
     my_mc.addEventListener(Event.ENTER_FRAME, fadeout); 
    } else { 
     my_mc.alpha +=0.1; 
    } 
} 
+0

感謝它工作的很棒! – 2012-03-08 17:31:53

+0

@sch這真是太棒了,真的很有用,謝謝=)但是,我不確定如何改善這個問題......如何爲任何MC調用這個函數?我的意思是,也許fadeout/in函數可以接收一個mc參數。但我不確定如何更改addEventListener部分。他可以請一些建議嗎? THANKS =) – Metafaniel 2013-03-15 16:38:08

+0

現在我知道如何去做,我已經回答了我自己的問題嘿嘿。我已經發布它作爲一個新的答案;) – Metafaniel 2013-03-15 18:56:32

1

fadeout,一旦你發現了阿爾法是< = 0和刪除事件監聽器,只需添加一個偵聽器fadein功能:如果你想要再循環回

function fadeout(e:Event){ 
    if(my_mc.alpha >=1){ 
     this.alpha -=0.1; 
     if(my_mc.alpha <=0){ 
      this.removeEventListener(Event.ENTER_FRAME, fadeout); 
      this.addEventListener(Event.ENTER_FRAME, fadein); // add this 
     } 
    } 
} 

和不斷重複,您可以執行類似於您的fadein功能的操作。

0

我已經成功地改進了原有@sch答案=) 我做了一個功能,你可以通過任何給定的影片剪輯作爲參數和淡入/淡出cicle將被應用到它。以下是如何(有註釋):

// A boolean variable holds the flag for this to be applied 
var boolFadeinFadeoutCicle:Boolean=true; 
// This function can receive as a parameter a movieclip 
function fncFadeinFadeout(mc:MovieClip){ 
    if(boolFadeinFadeoutCicle){ 
     //The fadeout listener it's added here, all relative to the mc received 
      MovieClip(mc).addEventListener(Event.ENTER_FRAME, Fadeout); 
     function Fadeout(evt:Event){ 
      MovieClip(mc).alpha -=0.05; 
        //Once the mc.alpha reaches zero, the fadeout listener it's removed and the fadein one it's added 
      if (MovieClip(mc).alpha <= 0){ 
       MovieClip(mc).removeEventListener(Event.ENTER_FRAME, Fadeout); 
       MovieClip(mc).addEventListener(Event.ENTER_FRAME, Fadein); 
      } 
        //Here the logic it's the same, but inverted. 
      function Fadein(evt:Event){ 
       MovieClip(mc).alpha +=0.05; 
       if (MovieClip(mc).alpha >= 1){ 
        MovieClip(mc).removeEventListener(Event.ENTER_FRAME, Fadein); 
        MovieClip(mc).addEventListener(Event.ENTER_FRAME, Fadeout); 
       } 
      } 
     } 
    }   
} 

正如你所看到的,這是同樣的邏輯@sch答案,但具有不同的結構,它可以接受一個MovieClip作爲這樣的參數:

fncFadeinFadeout(mc0); 
fncFadeinFadeout(mc0); 
fncFadeinFadeout(mc0); 
... 

所有這些影片剪輯都會淡入淡出。 感謝@sch回答並致電this tutorial! 我希望你們都發現這個不同的方法有用;)=)