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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.12.2008, 12:57
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 1  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
По умолчанию Проектирование интерфейса класса "Хранение информации"

Здравствуйте!

Допустим есть класс, в котором хранятся данные о клиентах и мы можем получить данные зная имя клиента. Пример
Код AS3:
//код с помощью которого данные были добавлены опущен для краткости.
var person = Clients.getPerson('Name');
trace (person.getSex); //Трассировка покажет нам пол клиента Name.
Так пользовать не удобно, удобнее было бы так:
Код AS3:
// 1) Добавляем клиента.
Clients.add('Name');
// 2) Устанавливаем его пол.
Clients.Name.Sex = 'male';
// 3) Получаем пол.
trace(Clients.Name.Sex); //Трассировка покажет нам пол клиента Name.
Вопрос: Как подобное реализовать?

Старый 29.12.2008, 13:27
kotez вне форума Посмотреть профиль Отправить личное сообщение для kotez Найти все сообщения от kotez
  № 2  
Ответить с цитированием
kotez

Регистрация: Jan 2008
Сообщений: 7
Clients - класс с функциями добавления , стирания (не имею представления его функциональности) , с Массивом клиентов
Client - класс самого клиента с свойствами типа "Пол" .

При добавлении создаешь объект клиента и сохраняешь его в массиве




получится так (если устраивает) :

// 1) Добавляем клиента.
Clients.add('Name');
// 2) Устанавливаем его пол.
Clients.yourArray['Name'].Sex = 'male';
// 3) Получаем пол.
trace(Clients.yourArray['Name'].Sex); //Трассировка покажет нам пол клиента Name.

Старый 29.12.2008, 14:12
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 3  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
Не совсем то, но на мысль наталкивает...

Старый 29.12.2008, 14:21
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 4  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Если уж больно хочется так, то пожалуйста

файл Clients.as
Код AS3:
package {
 
	public static const Clients:ClientsManager = new ClientsManager ();
 
}
файл ClientsManager.as
Код AS3:
package {
 
	import flash.utils.Proxy;
	import flash.utils.flash_proxy;
 
	use namespace flash_proxy;
 
	public dynamic class ClientsManager 
	extends Proxy {
 
		private var clients:Object = {};
		private var clientsCount:int = 0;
 
		public function add (client:Client):Client {
			var replacedClient:Client;
 
			if (client) {
				replacedClient = clients [client.name];
				clients [client.name] = client;
				clientsCount ++;
			} // end if
 
			return replacedClient;
		}
 
		public function remove (client:Client):Client {
			if (client && clients [client.name] is Client) {
				delete clients [client.name];
				clientsCount --;
			} // end if
 
			return client;
		}
 
		public function get length ():int {
			return clientsCount;
		}
 
		override flash_proxy function getProperty (name:*):* {
			if (clients.hasOwnProperty (name)) {
				return clients [name];										 
			} // end if
 
			return undefined;
		}
	}
 
}
файл Client.as
Код AS3:
package {
 
	public class Client {
 
		private var _sex:int;
		private var _name:String;
 
		public static const SEX_UNDEFINED:int 	= -1;
		public static const SEX_FEMALE:int		= 0;
		public static const SEX_MALE:int 		= 1;
 
		public function Client (name:String, sex:int) {
			_name = name;
			_sex = sex;
		}
 
		public function toString ():String {
			return '[Client name="' + _name + '" sex="' + _sex + '"]';
		}
 
		public function get name () 	{	return _name;	}
		public function get sex ()		{	return _sex;	}
 
	}
 
}
Использование
Код AS3:
Clients.add (new Client ('Vasya', Client.SEX_MALE));
Clients.add (new Client ('Mymra', Client.SEX_FEMALE));
 
trace (Clients.Mymra);
trace (Clients.Vasya);

Старый 29.12.2008, 15:20
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 5  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
Это надо переварить. Большое спасибо, 7thsky™.

Старый 29.12.2008, 17:26
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 6  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
А в чем прикол использования Clients.Vasya ? Чем это особенно удобно?

Старый 29.12.2008, 17:52
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 7  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Я тоже не понял прикола, так хотел Petav - я показал лишь один из способов реализации.

Старый 29.12.2008, 18:46
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 8  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
petav, расскажите пожалуйста, зачем вам это понадобилось?

Старый 29.12.2008, 19:28
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 9  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
У petav, должно быть, очень мощный компьютер и слишком мало ошибок в программе

Старый 30.12.2008, 12:42
petav вне форума Посмотреть профиль Отправить личное сообщение для petav Найти все сообщения от petav
  № 10  
Ответить с цитированием
petav

Регистрация: Dec 2008
Сообщений: 67
Друзья, я лишь пытаюсь удобно и гибко спроектировать приложение. Я пишу видеочат и в классе клиенты будет вся информация о подключившемся пользователе. Ссылка на его поток что бы управлять (воспроизводить/останавливать). Координаты его VideoBoX для чтения и изменения. Ссылка на объект который отображает список пользователей.

Добавлено через 3 минуты
litebox
Цитата:
У petav, должно быть, очень мощный компьютер и слишком мало ошибок в программе
Может Вы предложите на ассемблере писать. Тогда и 386 потянет. Я конечно шучу и не пытаюсь Вас обидеть. Ведь ООП для того и дано, Я хочу просто научиться использовать максимально эффективно. С точки зрения архитектуры.

Добавлено через 8 минут
И наконец-то чем понятнее код и логичнее, тем легче приложение эволюционировать. А если код будет не понятный, то изменения в нем подобно революции. Я не берусь судит что этот подход очень удобный, может в нем как и во многом другом есть недостатки, но мне для решения моей задачи он кажется логичным. Я еще не тестировал работоспособность этого метода, потому как занимаюсь этим проектом в свободное время....

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

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

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


 


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


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