用wiggle表达式控制图层的透明度,如:wiggle(10,100)代表图层每秒抖动10次,透明度的值为0-100范围的随机数。
如果我想让图层的透明度只为0或100,即实现图层的随机出现和消失
varwiggle_result=wiggle(10,50);
if(wiggle_result>50)
value=100;
else
value=0;
//"var"、"value = "在Ae中可省略,功能无差别,但尽量写完整,养成好习惯。
意思:
声明一个名为wiggle_result的变量,并将当前属性(Opacity)的值以“10 Hz、50 单位”随机摆动的结果赋给wiggle_result。
如果wiggle_result大于50:
将100赋给当前属性的值;
“可视化”演示:
效果:
表达式中的第一个参数(频率)并没有准确地在最终效果中生效,而准确的频率又与“图层随机的出现和消失”相悖,所以代码中的频率仅作为一种参考。
制作上图时,我将黑色矩形的Opacity设为了50,原因是:
灰色线表示Opacity原值,白色线表示由表达式运算出的Opacity当前值。在没有指定具体属性时,wiggle()函数会以当前属性(Opacity)的值进行计算,写完整就是:
thisProperty.wiggle();
所以我调整Opacity的值会对最终结果产生影响。
要想让自己在今后看得明白,可以这么做:
在透明属性上建立表达式:
t=Math.sin(time*10)*100; //建立透明度的循环从-100到100;
if(t>100) //判断循环,如果t>100的时候;
{t=100} //t就等于100;
else if(t<0) //t小于0的时候;
{t=0} //t就等于0;
else //其他的情况;
{t} //就等于t本身的数值;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果对于闪烁的频率不满意自己可以改 t=Math.sin(time*10)*100; 把(time*10)里面的10想再快一些就提高数值 ,比如20,30等,如果想闪烁的慢一些可以把10改小。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
另外说明:上面写的表达式闪烁的时候是有渐变过度的,比较缓和,如果你想闪烁的时候生硬一些,就是透明度0直接到100,那你就把最后一句else {t} 里面的t改为 value,效果也不错;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不推荐使用wiggle或者random这种的表达式来实现闪烁效果,因为数值得不到有效的控制,并且这类代码是是随机取值,是不可控的,效果表现不好。好了希望可以帮助到你!