Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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...

Старый 15.12.2011, 11:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я задумку не понял. Одно могу сказать наверняка - switch с одним case выглядит очень странно. И еще более странно выглядит break после return.
__________________
Hell is the possibility of sanity

Старый 15.12.2011, 20:39
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 3  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Код вообще ужасен.
line1 и line2 не могут ссылаться на один объект, если верить вашему коду - это два разных спрайта. line2 по идее содержит лоадер, который вы пихнули ранее.

Добавлено через 2 минуты
Не хотите весь скин пихнуть в свфку и забирать оттуда по getDefinition?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.