Zooming in Flash Builder 4.6

In most of the apps I make there is some kind of zooming. Now that I’m playing around with the latest Flex SDK release, Flex 4.6 SDK, I need it again. So to keep myself from reinventing the wheel over and over again, I’m posting my (conceptual) zoom code here. It’s using the TransformGestureEvent which is available for Flex Mobile Projects in Flash Builder 4.6.

view.addListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);

private function onZoom(e:TransformGestureEvent):void {
  var bounds1:Rectangle = view.content.getBounds(view.stage);

  // scale the view
  view.scaleX *= e.scaleX;
  view.scaleY *= e.scaleY;

  var bounds2:Rectangle = view.content.getBounds(view.stage);
  var dx:Number = bounds2.x - bounds1.x;
  var dy:Number = bounds2.y - bounds1.y;
  var dw:Number = bounds2.width - bounds1.width;
  var dh:Number = bounds2.height - bounds1.height;

  // move the view to keep it centered while zooming
  view.x -= dx + dw/2;
  view.y -= dy + dh/2;
}

Thursday, November 3, 2011   ()