2013-09-27 34 views
0

我正在做一個按鈕,其中有兩個過濾器,當用戶將光標放在它上面時(鼠標懸停),另外兩個過濾器在光標退出時補間過濾器。很基本的東西。AS3 Filter GlowIn不補間

這些過濾器是Glow和DropShadow。將光暈應用於文本,而將DropShadow應用於按鈕背景(簡單的矩形)。

這裏的問題是GlowIn的轉換不起作用。當鼠標懸停時,它立即以全alpha的形式應用濾鏡。雖然GlowOut可以工作。

雖然它被設置爲0.25倍,但爲了確保它完整5秒,我嘗試了它,但它仍然沒有工作,所以它不是一個計時問題。

這裏是我的代碼:

import caurina.transitions.Tweener; 
import caurina.transitions.properties.FilterShortcuts; 
import flash.filters.GlowFilter; 
FilterShortcuts.init(); 

texto.mouseEnabled = false; 

this.addEventListener(MouseEvent.MOUSE_OVER, FiltersIn); 
this.addEventListener(MouseEvent.MOUSE_OUT, FiltersOut); 

var glow = new GlowFilter(0xFFFFFF, 0, 5, 5, 3, 250); 
texto.filters = [glow]; 

function FiltersIn(MouseEvent):void{ 
    Tweener.addTween(this, {_DropShadow_distance:5, _DropShadow_alpha:1, _DropShadow_blurX:5, _DropShadow_blurY:5, time:0.25, transition:"easeOutCubic"}); 
    Tweener.addTween(texto, {_Glow_alpha:100, time:0.25, transition:"easeOutCubic"}); 
} 
function FiltersOut(MouseEvent):void{ 
    Tweener.addTween(this, {_DropShadow_distance:0, _DropShadow_alpha:0, _DropShadow_blurX:0, _DropShadow_blurY:0, time:0.25, transition:"EaseInCubic"}); 
    Tweener.addTween(texto, {_Glow_alpha:0, time:0.25, transition:"easeInCubic"}); 
} 

回答

1

的問題是發光濾鏡的alpha財產範圍是從0爲1,而不是0到100.但Tweener仍然尊重您提供的值 - 所以在插值alpha值時,它會跳到1以上,可能會在第一幀跳到100。所以這就是爲什麼你看到它立即完整的alpha。如果你將100換成1,那將會修復它。

而逆補間仍按預期工作的原因是因爲阿爾法值被限制爲1,所以即使有嘗試將其設置爲50,60等等到100,當輝光過濾器存儲實際值,它帽它在1,允許反補間進行插值順利1 0之間

這裏的到位編輯:

import caurina.transitions.Tweener; 
import caurina.transitions.properties.FilterShortcuts; 
import flash.filters.GlowFilter; 
FilterShortcuts.init(); 

texto.mouseEnabled = false; 

this.addEventListener(MouseEvent.MOUSE_OVER, FiltersIn); 
this.addEventListener(MouseEvent.MOUSE_OUT, FiltersOut); 

var glow = new GlowFilter(0xFFFFFF, 0, 5, 5, 3, 250); 
texto.filters = [glow]; 

function FiltersIn(MouseEvent):void{ 
    Tweener.addTween(this, {_DropShadow_distance:5, _DropShadow_alpha:1, _DropShadow_blurX:5, _DropShadow_blurY:5, time:0.25, transition:"easeOutCubic"}); 
    Tweener.addTween(texto, {_Glow_alpha:1, time:0.25, transition:"easeOutCubic"}); 
} 
function FiltersOut(MouseEvent):void{ 
    Tweener.addTween(this, {_DropShadow_distance:0, _DropShadow_alpha:0, _DropShadow_blurX:0, _DropShadow_blurY:0, time:0.25, transition:"EaseInCubic"}); 
    Tweener.addTween(texto, {_Glow_alpha:0, time:0.25, transition:"easeInCubic"}); 
} 
+0

工作,謝謝!解釋爲何發生的額外點。 – FoxLift

0

編輯:以前的答案不正確,由於混雜因素!請看新的答案。

+0

我換的文件在我的「Caurina」文件夾,在那裏我有FLA和SWV,並重新啓動閃存,但它沒有工作(我可能已經在最新版本)。我從來沒有使用SWC文件,但是當我嘗試打開它時說它無法讀取文件。難道我做錯了什麼? – FoxLift

+0

啊,你知道嗎?我實際上必須在交換SWC的源代碼版本的同時糾正錯誤的行(這對於您的信息來說是相同的代碼,但是爲了方便使用一個文件而進行了預編譯),您可以使用它們去文件>動作腳本設置,然後將它們添加到庫路徑選項卡。)所以上述是不正確的,對不起。我現在提交一個新的答案! – hanenbro

-3

臨提示:不要刻意使用中間人:) 使用Tweenmax從使用GreenSock或椋鳥變戲法 - 他們只是最好

+0

aww downvoted? TweenMax.to(stack,.3,{autoAlpha:0}); :) – mika