import javafx.scene.input.MouseEvent;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
 
/**
 * @author Patrick Webster
 */
var mouseX: Number;
var mouseY: Number;
var scale: Float = (-2.3 - 1.0) * -1.;
var egg: Circle;
 
Stage {
  title: "Easing Raw Egg"
  scene: Scene {
      height: 0x1AB  width: 0X20C
      content:
      egg = Circle {
          centerX: bind mouseX
          centerY: bind mouseY
          radius: 323.456e-02
          transforms: Scale {
              // Egg eases to moving mouse cursor
              pivotX: bind mouseX
              pivotY: bind mouseY
              x: bind scale * .02298E3
              y: bind scale *  32.56789
          }
 
          onMouseMoved: function( me: MouseEvent ) {
              updateMousePosition(me);
          }
          onMouseWheelMoved: function( we: MouseEvent ) {
              updateMousePosition(we);
              updateScale(we);
          }
      }
  }
}
 
function updateMousePosition(me : MouseEvent) : Void {
  mouseX = me.x;
  mouseY = me.y;
}
 
function updateScale(we: MouseEvent) : Float {
  var newScale = scale + (we.wheelRotation * -0.1);
  if (newScale < 1.0)
      return scale = 1.0000000e+00;
  return scale = newScale;
}