Я пытаюсь масштабировать видеоролик контейнера/родителя, чтобы эффективно увеличить масштаб до точки, на которую ссылается один из ее дочерних элементов. Я выяснил, как использовать globalToLocal, чтобы получить эту точку в центре сцены, но проблема в том, что точка регистрации для клипа контейнера (и должна оставаться) в левом верхнем углу, поэтому, когда я масштабирую контейнерный клип вверх, точка не остается в центре экрана. Вот мой код:flash as3 масштабирование (масштабирование) до определенной точки внутри клипа
// Ревизии:
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})
}
Когда я делаю это, увеличенному точка заканчивает тем, что где-то около «Магазин игрушек Мейбл Грир» - который я полагаю, был центральной точкой стадии до treeClip был двинут так, чтобы «Джон Андерсон» находился в центре сцены.
Спасибо - я сортирую получить его (извините), но когда я его реализации, это не совсем, кажется, масштабирование в нужное место. Я изменил свое описание выше, чтобы показать пересмотренный код. Любая помощь, которую вы могли бы предоставить, была бы замечательной. – mheavers
О - также - почему вы включили фрагмент ролика в качестве параметра функции, если мувиклип (цель) не используется? Должно быть? – mheavers
Да, включая цель, на самом деле не используется :). Однако, если центральная точка фактически выражена в глобальном пространстве координат, вам нужно сделать 'center = target.globalToLocal (center);', что делает цель необходимой снова. – back2dos