Показать сообщение отдельно
Старый 14.12.2011, 05:50
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Flame Экспортер динамической библиотеки

Доброго время суток.
В своей работе имитирую динамическую библиотеку.
Код AS3:
package wa.games.tanks.display.skins.classes
{
	import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.net.URLRequest;
        import flash.errors.IOError;
        import flash.events.IOErrorEvent;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
 
    public class SkinLogistic extends Sprite {
 
        private var skinlib:Array;
 
        public function SkinLogistic() {
			skinlib = new Array();
        }
 
		public function addSkin(id:String, url:String):void
		{
			var imageLoader:Loader = new Loader();
			imageLoader.load(new URLRequest(url + "?id=" + id));
 
			skinlib[id] = new Object();
			skinlib[id].status = 'LOAD';
			skinlib[id].resource = imageLoader;
			skinlib[id].resource.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
			skinlib[id].resource.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
		}
 
		public function verify(property:String = null):String
		{
			switch (property)
			{
				case "loading":
				{							
					for ( var temp:* in skinlib )
					{
						if (skinlib[temp].status == 'LOAD') 
						{
							return 'LOAD';
							break;
						}						
					}
					return 'COMPLETE';
				} break;
			}	
			return 'NaN';
		}
 
		public function export(id:String, type:String = null):* {
			switch (type)
			{
				case "bitmap":
				{
					return skinlib[id].resource.content;
				} break;
 
				case "sprite":
				{
					var sp:Sprite = new Sprite();
					sp.addChild(skinlib[id].resource);
					return sp;
				} break;
 
				default:
				{
					return skinlib[id].resource;
				} break;
			}
		}
 
		public function get status():String
		{
			return STATUS;
		}
 
		private function onLoadComplete(e:*):void
		{
			var id:String = e.target.parameters.id;
			skinlib[id].status = 'ACTIVE';			
		}
 
		private function onLoadError(e:*):void
		{
			var id:String = e.target.parameters.id;
			skinlib[id].status = e.toString();
		}
    }
}
Но в результате выполнения
Код AS3:
           var skin:SkinLogistic = new SkinLogistic();
 
           skin.addSkin('LineBack', 'sources/lineback.png')
 
           var line1:* = skin.export('LineBack','sprite');
 
           var line2:* = skin.export('LineBack','sprite');
line1 и line2 ссылаются на один и тотже объект, а мну нужно что бы ссылания вообще не было, а объекты получали лишь объект который по сути нужно просто клонировать.

Помогите пожалуйста.
Может что не понятно написал, комментируйте уточню.
__________________
return this...