⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operatorswitch.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.vis.operator
{
	import flare.animate.Transitioner;
	
	/**
	 * An OperatorSwitch maintains a list of operators but only runs one
	 * of these operators when invoked. A switch allows different operator
	 * chains to be executed at different times. Operators can be added to
	 * an OperatorSwitch using the <code>add</code> method. Once added,
	 * operators can be retrieved and set using their index in the list, either
	 * with array notation (<code>[]</code>) or with the
	 * <code>getOperatorAt</code> and <code>setOperatorAt</code> methods.
	 * 
	 * <p>The current sub-operator to run is determined by
	 * the <tt>index</tt> property. This index can be set manually or can
	 * be automatically determined upon each invocation by assigning a
	 * custom function to the <tt>indexFunction</tt> property.</p>
	 */
	public class OperatorSwitch extends OperatorList
	{
		private var _cur:int = -1;
		
		/** The currently active index of the switch. Only the operator at this
		 *  index is run when the <code>operate</code> method is called. */
		public function get index():int { return _cur; }
		public function set index(i:int):void { _cur = i; }
		
		/**
		 * A function that determines the current index value of this
		 * OperatorSwitch. This can be used to have the operator automatically
		 * adjust which sub-operators to run. If this property is non-null,
		 * the function will be invoked each time this OperatorSwitch is run
		 * and the index property will be set with the resulting value,
		 * overriding any previous index setting.
		 * The index function should accept zero arguments and return an
		 * integer that is a legal index value for this switch. If the
		 * returned value is not a legal index value (i.e., it is not an
		 * integer or is out of bounds) then no sub-operators will be
		 * run.
		 */
		public var indexFunction:Function = null;
		
		// --------------------------------------------------------------------
		
		/**
		 * Creates a new OperatorSwitch.
		 * @param ops an ordered set of operators to include in the switch.
		 */
		public function OperatorSwitch(...ops) {
			for each (var op:IOperator in ops) {
				add(op);
			}
		}
		
		/** @inheritDoc */
		public override function operate(t:Transitioner=null):void
		{
			t = (t!=null ? t : Transitioner.DEFAULT);
			if (indexFunction != null) {
				_cur = indexFunction();
			}
			if (_cur >= 0 && _cur < _list.length && _list[_cur].enabled)
				_list[_cur].operate(t);
		}
		
	} // end of class OperatorSwitch
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -