forked from: Zoom Pan
forked from Zoom Pan (diff: 110)
ActionScript3 source code
/**
* Copyright moriyak ( http://wonderfl.net/user/moriyak )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/ydYR
*/
// forked from shapevent's Zoom Pan
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.geom.*;
[SWF(width = 500, height = 500, frameRate = 30, backgroundColor = 0xFFFFFF)]
public class Main extends MovieClip
{
private var s:Shape;
private var scale:Number= 1;
private var dx:Number = 0;
private var dy:Number = 0;
private var isDown:Boolean;
public function Main()
{
// init
initShape();
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
}
// private methods
private function onDown(evt:MouseEvent):void { this.zoomIn(); }
private function zoomIn():void
{
scale *= 1.1;
if (scale > 10) scale = 10;
dx += (mouseX - dx);
dy += (mouseY - dy);
if (dx < 0) dx = 0;
if (dy < 0) dy = 0;
if (dx > stage.stageWidth) dx = stage.stageWidth;
if (dy > stage.stageHeight) dy = stage.stageHeight;
// matrix zoom/pan
var m:Matrix = this.transform.matrix;
m.identity();
m.translate(-dx, -dy);
m.scale(scale, scale);
m.translate(dx, dy);
this.transform.matrix = m;
}
private function initShape():void
{
s = new Shape();
var g:Graphics = s.graphics;
for (var i:int = 0; i < 5; i++) {
for (var j:int = 0; j < 5; j++) {
g.beginFill(0xFFFFFF * Math.random());
g.drawRect(i * 100, j * 100, 100, 100);
g.endFill();
}
}
this.addChild(s);
}
}
}