/** * VERSION: 2.03 * DATE: 10/22/2009 * ACTIONSCRIPT VERSION: 3.0 * UPDATES AND DOCUMENTATION AT: http://www.TweenMax.com **/ package com.greensock.plugins { import com.greensock.core.*; import flash.filters.*; /** * @private * Base class for all filter plugins (like blurFilter, colorMatrixFilter, glowFilter, etc.). Handles common routines. * There is no reason to use this class directly.

* * Copyright 2011, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for corporate Club GreenSock members, the software agreement that was issued with the corporate membership. * * @author Jack Doyle, jack@greensock.com */ public class FilterPlugin extends TweenPlugin { /** @private **/ public static const VERSION:Number = 2.03; /** @private **/ public static const API:Number = 1.0; //If the API/Framework for plugins changes in the future, this number helps determine compatibility /** @private **/ protected var _target:Object; /** @private **/ protected var _type:Class; /** @private **/ protected var _filter:BitmapFilter; /** @private **/ protected var _index:int; /** @private **/ protected var _remove:Boolean; /** @private **/ public function FilterPlugin() { super(); } /** @private **/ protected function initFilter(props:Object, defaultFilter:BitmapFilter, propNames:Array):void { var filters:Array = _target.filters, p:String, i:int, colorTween:HexColorsPlugin; var extras:Object = (props is BitmapFilter) ? {} : props; _index = -1; if (extras.index != null) { _index = extras.index; } else { i = filters.length; while (i--) { if (filters[i] is _type) { _index = i; break; } } } if (_index == -1 || filters[_index] == null || extras.addFilter == true) { _index = (extras.index != null) ? extras.index : filters.length; filters[_index] = defaultFilter; _target.filters = filters; } _filter = filters[_index]; if (extras.remove == true) { _remove = true; this.onComplete = onCompleteTween; } i = propNames.length; while (i--) { p = propNames[i]; if (p in props && _filter[p] != props[p]) { if (p == "color" || p == "highlightColor" || p == "shadowColor") { colorTween = new HexColorsPlugin(); colorTween.initColor(_filter, p, _filter[p], props[p]); _tweens[_tweens.length] = new PropTween(colorTween, "changeFactor", 0, 1, p, false); } else if (p == "quality" || p == "inner" || p == "knockout" || p == "hideObject") { _filter[p] = props[p]; } else { addTween(_filter, p, _filter[p], props[p], p); } } } } /** @private **/ public function onCompleteTween():void { if (_remove) { var filters:Array = _target.filters; if (!(filters[_index] is _type)) { //a filter may have been added or removed since the tween began, changing the index. var i:int = filters.length; while (i--) { if (filters[i] is _type) { filters.splice(i, 1); break; } } } else { filters.splice(_index, 1); } _target.filters = filters; } } /** @private **/ override public function set changeFactor(n:Number):void { var i:int = _tweens.length, ti:PropTween, filters:Array = _target.filters; while (i--) { ti = _tweens[i]; ti.target[ti.property] = ti.start + (ti.change * n); } if (!(filters[_index] is _type)) { //a filter may have been added or removed since the tween began, changing the index. i = _index = filters.length; //default (in case it was removed) while (i--) { if (filters[i] is _type) { _index = i; break; } } } filters[_index] = _filter; _target.filters = filters; } } }