function enterFrame() {
                if (dur > 0) {
					if (isFinite(Crafty.viewport._zoom)) zoom = Crafty.viewport._zoom;
                    var old = {
                        width: act.width * zoom,
                        height: act.height * zoom
                    };
                    zoom += zoom_tick;
                    Crafty.viewport._zoom = zoom;
                    var new_s = {
                        width: act.width * zoom,
                        height: act.height * zoom
                    },
                    diff = {
                        width: new_s.width - old.width,
                        height: new_s.height - old.height
                    };
                    Crafty.stage.inner.style[prop] = 'scale(' + zoom + ',' + zoom + ')';
                    if (Crafty.canvas._canvas) {
						var czoom = zoom / (zoom - zoom_tick);
						Crafty.canvas.context.scale(czoom, czoom);
                        Crafty.DrawManager.drawAll();
                    }
                    Crafty.viewport.x -= diff.width * prct.width;
                    Crafty.viewport.y -= diff.height * prct.height;
                    dur--;
                }
            }
@
#Crafty.viewport.zoom
@comp Crafty.viewport
@sign public void Crafty.viewport.zoom(Number amt, Number cent_x, Number cent_y, Number time)
@param Number amt - amount to zoom in on the target by (eg. 2, 4, 0.5)
@param Number cent_x - the center to zoom on
@param Number cent_y - the center to zoom on
@param Number time - the duration in frames of the entire zoom operation

Zooms the camera in on a given point. amt > 1 will bring the camera closer to the subject
amt < 1 will bring it farther away. amt = 0 will do nothing.
Zooming is multiplicative. To reset the zoom amount, pass 0.