Powiększ do iz punktu

Próbuję powiększyć obiekt DisplayObject do pewnego punktu. Pomyślałem, że to będzie łatwe, ale spędziłem dzień próbując to rozgryźć.

Zasadniczo tak myślępowinien praca. Nacisk na powinien.

//newPoint is the point being centered. There is no initial scaling, so I do not need to compensate for that (yet)
//scale is the zoom level
//container is the parent of the obj
//obj is the object being scaled/panned
var p:Point = new Point(
    ( this.container.width - this.obj.width * scale + newPoint.x * scale ) / 2, 
    ( this.container.height - this.obj.height * scale + newPoint.y * scale ) / 2 
);

this.obj.scaleX = this.obj.scaleY = scale;
this.obj.x = p.x;
this.obj.y = p.y;

Wyśrodkowuje punkt, jeśli skala wynosi 1, ale w miarę zwiększania skali jest coraz dalej od środka. Próbowałem dziesiątek różnych metod.Ta metoda, które widziałem na kilku stronach, dało takie same dokładne wyniki. Ktoś ma jakiś pomysł, jak to zrobić?

EDYCJA 10-1-12: W następstwie wziąłemfragment kodu że LondonDrugs_MediaServices stanowiły podstawę mojego oryginalnego wydania. Musiałem mieć możliwość powiększenia określonego punktu w określonej skali względem nieskalowanego obrazu (pomyśl, jak Google Maps powiększa się do określonej lokalizacji). Aby to zrobić, musiałem wyśrodkować obraz w punkcie przed uruchomieniem kodu tłumaczenia. Dodałem dodatkowy kod poniżej. W przypadku innych zastosowań (szczypta powiększania, przewijania i dwukrotnego kliknięcia) użyłem kodu dostarczonego przez Vesper, który działał całkiem dobrze.

//obj is the object being translated
//container is its parent
//x and y are the coordinates to be zoomed to, in untranslated scaling
//obj.scaleX and obj.scaleY are always identical in my class, so there is no need to account for that


//calculates current center point, with scaling
var center:Point = new Point( ( this.container.width - this.obj.width * this.obj.scaleX ) / 2, ( this.container.height - this.obj.height * this.obj.scaleX ) / 2 );

//calulcates the distance from center the point is, with scaling
var distanceFromCenter:Point = new Point( this.obj.width * this.obj.scaleX / 2 - x * this.obj.scaleX, this.obj.height * this.obj.scaleX / 2 - y * this.obj.scaleX );

//center the object on that specific point
this.obj.x = center.x + distanceFromCenter.x;
this.obj.y = center.y + distanceFromCenter.y;

questionAnswers(4)

yourAnswerToTheQuestion