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

📄 databox.as

📁 QS我也没用过
💻 AS
字号:
package qs.containers
{
	import mx.containers.Box;
	import mx.core.IFactory;
	import qs.utils.InstanceCache;
	import mx.core.UIComponent;
	import mx.collections.IList;
	import mx.core.IDataRenderer;
	import mx.events.CollectionEvent;
	import mx.collections.ArrayCollection;
	import mx.collections.XMLListCollection;
	
	public class DataBox extends Box
	{
		private var _cache:InstanceCache;
		private var _dataProvider:IList;
		
		public function DataBox():void
		{
			_cache = new InstanceCache();
			_cache.destroyUnusedInstances = true;
			_cache.createCallback = addNewItem;
			_cache.destroyCallback = InstanceCache.removeInstance;
		}
		
		private function addNewItem(item:UIComponent,idx:int):void
		{
			addChildAt(item,idx);
		}
		
		public function set itemRenderer(value:IFactory):void
		{
			_cache.factory = value;
			updateData();
		}
		public function get itemRenderer():IFactory
		{
			return _cache.factory;
		}
		public function set dataProvider(value:Object):void
		{
	        if (_dataProvider)
	        {
	            _dataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE, dataChanged);
	        }
	
	        if (value is Array)
	        {
	            _dataProvider = new ArrayCollection(value as Array);
	        }
	        else if (value is IList)
	        {
	            _dataProvider = IList(value);
	        }
			else if (value is XMLList)
			{
				_dataProvider = new XMLListCollection(value as XMLList);
			}
			else if (value is XML)
			{
				var xl:XMLList = new XMLList();
				xl += value;
				_dataProvider = new XMLListCollection(xl);
			}
	        else
	        {
	            // convert it to an array containing this one item
	            var tmp:Array = [];
				if (value != null)
					tmp.push(value);
	            _dataProvider = new ArrayCollection(tmp);
	        }
	        _dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, dataChanged);
	        dataChanged();
		}
		public function get dataProvider():Object
		{
			return _dataProvider;
		}
		
		private function dataChanged():void
		{
			_cache.count = _dataProvider.length;
			updateData();
		}
		private function updateData():void
		{
			var instances:Array = _cache.instances;
			var len:int = instances.length;
			if(len == 0)
				return;
			var inst:UIComponent = instances[0];
			if(inst is IDataRenderer)
			{
				for (var i:int = 0;i<len;i++)
				{
					instances[i].data = _dataProvider.getItemAt(i);
				}
			}
		}
	}
}

⌨️ 快捷键说明

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