Показать сообщение отдельно
Старый 21.10.2010, 16:40
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 2  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
package vaukalak.managers 
{
	/**
	 * ...
	 * @author vaukalak
	 */
	public class SynchronizationGroup
	{
 
		private var _items:Vector.<SynchronizationItem> = Vector.<SynchronizationItem>([]);
 
		public function SynchronizationGroup() {
 
		}
 
		public function addItem(it:*, scale:Number = 1, off:Number = 0):SynchronizationItem {
			var item:SynchronizationItem = new SynchronizationItem(it, scale, off);
 
			_items.push(item);
 
			return item;
		}
 
		public function removeItem(it:*):void {
			var shifht:Boolean = false;
			var i:uint = 0;
			while (!shifht && (i < _items.length)) {
				if (_items[i].object == it) {
					shifht = true;
					_items[i] = null;
				}
				i++;
			}
			if (shifht) {
 
				for (i = i; i < _items.length; i++)
					_items[i - 1] = _items[i];
 
				_items.length--;
 
			}
		}
 
		public function clear():void {
			_items = Vector.<SynchronizationItem>([]);
		}
 
		public function updateItems(prop:String, val:Number):void {
			for (var i:uint = 0; i < _items.length; i++) {
				_items[i].setValue(prop, val);
			}
		}
 
	}
 
}
Код AS3:
package vaukalak.managers 
{
	/**
	 * ...
	 * @author vaukalak
	 */
	public class SynchronizationItem
	{
 
		internal var object:*;
 
		private var _propertyOffsets:Object={};
 
		public var scale:Number;
		public var offset:Number;
 
		public function SynchronizationItem(obj:*, sc:Number=1, off:Number=0) {
			object = obj;
			scale = sc;
			offset = off;
		}
 
		internal function setValue(prop:String, val:Number):void {
			object[prop] = (val + offset + (_propertyOffsets[prop] ? _propertyOffsets[prop] : 0)) * scale;
		}
 
		public function setPropertyOffset(prop:String, val:Number):void {
			_propertyOffsets[prop] = val;
		}
 
	}
 
}
Еще не дописал правда, но работает
Создаёте группу в неё пихаете все объекты что нужно. Можно указать scale и offset для каждого итема, а также для нейкого определённого его свойства. Что бы изменить свойства всех объектов, вызывайте метод updateItems класса SynchronizationGroup.
__________________
ranga