V2组件里有一个accordion,里面点击后item滚动的效果我一直以为非常难实现,今天要自己实现非常在本子上画来画去,又是看V2组件的源代码,最后没搞明白。
最后我就直接上手编了,没想到极其的easy,看来有时候眼低手高也不太好。
效果:
import huawen.gs.TweenLite;
import flash.events.MouseEvent;
import flash.filters.BitmapFilter;
import flash.filters.BitmapFilterQuality;
import flash.filters.GlowFilter;
var arr:Array = new Array();
var flag:int;
arr.push(mc1);
arr.push(mc2);
arr.push(mc3);
arr.push(mc4);
for (var i:uint=0; i<arr.length; i++) {
arr[i].addEventListener(MouseEvent.ROLL_OVER,handler);
arr[i].addEventListener(MouseEvent.ROLL_OUT,handleOut);
}
panel.addEventListener(MouseEvent.ROLL_OVER,glow);
var filter:BitmapFilter = getBitmapFilter();
var myFilters:Array = new Array();
myFilters.push(filter);
function glow(e:Event):void {
panel.filters=myFilters;
}
function handler(e:Event):void {
for (var i:uint=0; i<arr.length; i++) {
if (arr[i]==e.target) {
flag=i;
arr[i].filters=myFilters;
break;
}
}
for (i=0; i<arr.length; i++) {
if (i<flag) {
arr[i].filters=null;
TweenLite.to(arr[i], .2, { y:28*i});
} else if (i==flag) {
TweenLite.to(arr[i], .2, { y:28*i});
} else {
arr[i].filters=null;
TweenLite.to(arr[i], .2, { y:28*i+80});
}
}
panel.y = flag*28+28;
}
function handleOut(e:Event):void {
//e.target.filters=null;
}
function getBitmapFilter():BitmapFilter {
var color:Number = 0x33CCFF;
var alpha:Number = 0.8;
var blurX:Number = 10;
var blurY:Number = 10;
var strength:Number = 2;
var inner:Boolean = true;
var knockout:Boolean = false;
var quality:Number = BitmapFilterQuality.HIGH;
return new GlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);
}
回复Comments
作者:
{commentrecontent}