Я пытаюсь увеличить контейнерный / родительский фрагмент ролика, чтобы эффективно увеличить масштаб до точки, на которую ссылается один из его дочерних элементов. Я выяснил, как использовать globalToLocal, чтобы получить эту точку в центре сцены, но проблема в том, что точка регистрации для клипа контейнера находится (и должна оставаться) в верхнем левом углу, поэтому, когда я масштабирую клип контейнера вверх, точка не остается в центре экрана. Вот мой код:
// редакция:
var stageCenter = new Point(int(stage.stageWidth/2),int(stage.stageHeight)/2);
var parPointLocal = parRef.globalToLocal(stageCenter);
TweenMax.to(treeClip,.5,{x:parPointLocal.x,y:parPointLocal.y,onComplete:doZoom});
function doZoom():void {
var zoomPoint = zoomToMember(treeClip,stageCenter,2);
function zoomToMember(target:MovieClip, center:Point, scale:Number):Point {
var m:Matrix = new Matrix();
m.translate(-center.x, -center.y);//move the center into (0,0)
m.scale(scale, scale);//scale relatively to (0,0) (which is where our center is now)
m.translate(center.x, center.y);//move the center back to its original position
return m.transformPoint(new Point());//transform (0,0) using the whole transformation matrix to calculate the destination of the upper left corner
}
TweenMax.to (treeClip,.5,{x:zoomPoint.x,y:zoomPoint.y,scaleX:2,scaleY:2})
}
Когда я делаю это, увеличенная точка оказывается где-то рядом с «Магазином игрушек Мэйбл Грир», который, как мне кажется, был центральной точкой сцены до того, как скрепка для дерева была скручена так, чтобы «Джон Андерсон» находился в центре сцена.