Доброго всем времени суток! Пытаюсь организовать масштабирование относительно центра через матрицу. Все хорошо, но объект смещается монемногу в сторону. В данном случае примерно 20 пихелей в лево в минуту

Не подскажет ли кто-нибудь что у меня тут не так? Два дня уже убил :-(

Код AS3:
package {
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
public class tester extends Sprite {
private var test1:Sprite=new Sprite;
private var test2:Sprite = new Sprite;
public function tester():void {
getRectangle(test1,0xFF0000);
getRectangle(test2,0x00FF00);
test1.x=50;
test2.x=84;
test1.y=test2.y=20;
addChild(test1);
addChild(test2);
test2.addEventListener(Event.ENTER_FRAME,centerScale);
test1.scaleX=test1.scaleY=1.1;
}
private var cs:Number=1;
private var csplus:Number=0.1;
private function centerScale(e:Event):void {
var obj:Sprite = e.currentTarget as Sprite;
if(cs>=2) {
csplus=-.1;
}
if(cs<=0.2) {
csplus=.1;
}
cs+=csplus;
var point:Point=getRealCenter(obj);
trace(point);
var matr:Matrix = obj.transform.matrix;
var position:Point = new Point(matr.tx,matr.ty);
var scal:Point=new Point(matr.a,matr.d);
matr.identity();
var center:Point = matr.deltaTransformPoint(point);
matr.translate(-center.x,-center.y);
matr.scale(cs,cs);
matr.translate(center.x,center.y);
obj.transform.matrix=matr;
matr.identity();
obj.x=position.x-point.x*(cs-scal.x);
obj.y=position.y-point.y*(cs-scal.y);
}
public function getRealCenter(target:Sprite):Point {
var targetBounds:Rectangle = target.getBounds(target);
var matr:Matrix = new Matrix;
matr.translate(-targetBounds.x,-targetBounds.y);
var data:BitmapData = new BitmapData(targetBounds.width,targetBounds.height,true,0x00000000);
data.draw(target,matr);
var colorBounds:Rectangle = data.getColorBoundsRect(0xFFFFFFFF, 0x00000000, false);
var result:Point = new Point(colorBounds.x+colorBounds.width/2,colorBounds.y+colorBounds.height/2);
return result.add(new Point(targetBounds.x,targetBounds.y));
}
private function getRectangle(obj:Sprite,color:uint):void {
obj.graphics.clear();
obj.graphics.beginFill(color,1);
obj.graphics.drawRect(80,80,2,80);
obj.graphics.endFill();
}
}
}
Спасибо