2013-09-27 27 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