Показать сообщение отдельно
Старый 19.02.2014, 15:24
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 1  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
По умолчанию Как создать класс для изменения нескольких свойств сразу

И название придумать сложно и объяснить, хотя со вторым проще, так-как хочется не придумать новое, а повторить имеющееся. Как пример класс Matrix. Одноимённое свойство есть у всех ДО и при помощи этого класса, можно изменить несколько свойств сразу. Как такое реализовать я даже представить не могу, некогда такого не встречал. Единственное что приходит на скудный ум - ... Но я знаю, что это совсем не то, скорее всего для такой реализации есть правильное название. Поделитесь, как такое сделать?
Код AS3:
package 
{
	import flash.display.Sprite;
 
	public class Main extends Sprite 
	{
 
		public function Main() 
		{
			var customClass:CustomClass = new CustomClass();
			var properties:Properties = customClass.properties;
			properties.propertyOne = 10;
			properties.propertyTwo = 20;
			properties.propertyThree = 30;
			customClass.properties = properties;
			trace(customClass.propertyOne, customClass.propertyTwo, customClass.propertyThree);
		}
	}
 
}
Код AS3:
package 
{
	public class CustomClass 
	{
		private var _propertyOne:Number;
		private var _propertyTwo:Number;
		private var _propertyThree:Number;
 
		private var _properties:Properties;
		public function CustomClass() 
		{
 
		}
 
		public function get properties():Properties 
		{
			if (_properties == null)
					_properties = new Properties();
 
			return _properties;
		}
 
		public function set properties(value:Properties):void 
		{
			_properties = value;
			_properties.mutableClass = this;
		}
 
		public function set propertyOne(value:Number):void 
		{
			if (value == _propertyOne) 
			{
				return;
			}
			_propertyOne = value;
		}
 
		public function set propertyTwo(value:Number):void 
		{
			if (value == _propertyTwo) 
			{
				return;
			}
			_propertyTwo = value;
		}
 
		public function set propertyThree(value:Number):void 
		{
			if (value == _propertyThree) 
			{
				return;
			}
			_propertyThree = value;
		}
 
		public function get propertyOne():Number 
		{
			return _propertyOne;
		}
 
		public function get propertyTwo():Number 
		{
			return _propertyTwo;
		}
 
		public function get propertyThree():Number 
		{
			return _propertyThree;
		}
 
 
	}
 
}
Код AS3:
package 
{
	public class Properties 
	{
		private var _propertyOne:Number;
		private var _propertyTwo:Number;
		private var _propertyThree:Number;
 
		private var _propertis:Vector.<String>;
 
		private var _mutableClass:CustomClass;
		public function Properties() 
		{
			_propertis = new < String > ['propertyOne', 'propertyTwo', 'propertyThree'];
		}
		private function changeProperties():void
		{
			var length:int = _propertis.length;
			var property:String;
			for (var i:int = 0; i < length; i++) 
			{
				property = _propertis[i];
				_mutableClass[property] = this[property];
			}
		}
		public function set mutableClass(value:CustomClass):void 
		{
			if (value == _mutableClass) 
			{
				return;
			}
			_mutableClass = value;
			this.changeProperties();
		}
 
		public function get propertyOne():Number 
		{
			return _propertyOne;
		}
 
		public function set propertyOne(value:Number):void 
		{
			if (value == _propertyOne) 
			{
				return;
			}
			_propertyOne = value;
		}
 
		public function get propertyTwo():Number 
		{
			return _propertyTwo;
		}
 
		public function set propertyTwo(value:Number):void 
		{
			if (value == _propertyTwo) 
			{
				return;
			}
			_propertyTwo = value;
		}
 
		public function get propertyThree():Number 
		{
			return _propertyThree;
		}
 
		public function set propertyThree(value:Number):void 
		{
			if (value == _propertyThree) 
			{
				return;
			}
			_propertyThree = value;
		}
	}
 
}