
Код 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.