Показать сообщение отдельно
Старый 21.03.2014, 23:17
kotyavo вне форума Посмотреть профиль Отправить личное сообщение для kotyavo Найти все сообщения от kotyavo
  № 4  
kotyavo

Регистрация: Dec 2013
Сообщений: 49
Я делал так, вроде хорошо работает

Код AS3:
 
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
 
 
public class AssetManager extends MovieClip
	{
		var assets_url:Array;
		var assets:Array;
		var loading:Number;
 
		public function AssetManager()
		{
			assets = new Array;
			assets_url = new Array;
			loading = 0;
		}
 
		/**
		 * 
		 * @param	url
		 */
		public function add(url:String, name:String):void
		{
			loading++;
			assets_url[name] = url;
		}
 
		/**
		 * Получить загруженный asset
		 * @param	name
		 * @return
		 */
		public function get(name:String)
		{
			var asset:AssetLoad = AssetLoad(assets[name]);
			return asset.clone();
		}
 
		/**
		 * 
		 * @param	e
		 */
		public function decrimentLoader(e:Event):void
		{
			loading--;
			if (loading <= 0)
			{
				dispatchEvent(new Event(Event.COMPLETE));
			}
		}
 
		/**
		 * Запустить загрузку всех ресурсов
		 */
		public function loadAssets():void 
		{
			for (var name:String in assets_url)
			{
 
				var asset:AssetLoad =  new AssetLoad(assets_url[name], name);
				asset.addEventListener(Event.COMPLETE, decrimentLoader);
				assets[name] = asset;
 
			}
 
		}
}
Код AS3:
package
{
	import flash.display.*;
 
	import flash.events.Event;
	import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author 
	 */
	public class AssetLoad extends MovieClip 
	{
		public var loader:Loader;
 
		public var bitmapData:BitmapData;
 
		public function AssetLoad(file:String, name:String = null):void
		{
			loader = new Loader;
			loader.name = name;
			loader.load(new URLRequest(file));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoaderComplite);
		}
 
 
		/**
		 * Дубликат
		 */
		public function clone() {
			var mc:MovieClip = new MovieClip();
				mc.addChild( new Bitmap(bitmapData));
			return mc;
		}	
 
 
		public function onLoaderComplite(event:Event):void 
		{ 
			var loader:Loader = event.target.loader as Loader;
				bitmapData = Bitmap(loader.content).bitmapData.clone();
				//loader.cacheAsBitmap = true;
 
				addChildAt(clone(), 0);
 
			//loader = null;
			loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, this.onLoaderComplite);
			dispatchEvent( new Event(Event.COMPLETE));
 
		}
	}
 
}