Увеличить до и из точки

Я пытаюсь увеличить DisplayObject в определенной точке. Я подумал, что это будет легко, но я провел целый день, пытаясь понять это.

В основном, я думаю, что этоshould Работа. Акцент на следует.

//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;

Она центрирует точку, если масштаб равен 1, но с увеличением масштаба она все дальше и дальше удаляется от центра. Я испробовал десятки разных методов.Этот метод, который я видел на нескольких сайтах, дал одинаковые точные результаты. У кого-нибудь есть идеи, как заставить это работать?

EDIT 10-1-12: As a followup, I took the фрагмент кода что LondonDrugs_MediaServices предоставил в качестве основы для моей первоначальной проблемы. Мне нужно было иметь возможность увеличивать масштаб до определенной точки в определенном масштабе относительно немасштабированного изображения (подумайте, как Google Maps увеличивает масштаб до определенного местоположения). Чтобы сделать это, я должен был центрировать свое изображение в точке перед запуском кода перевода. Я разместил дополнительный код ниже. Для других целей (масштабирование, прокрутка и двойной щелчок) я использовал код, предоставленный Vesper, который работал довольно хорошо.

//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;

Ответы на вопрос(3)

Ваш ответ на вопрос