import java.util.Random;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.Scene;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
class DukeAnimModel {
public var imageURL = "{__DIR__}images/duke.png";
public var x = 0;
public var y = 0;
var xTarget = 0;
var yTarget = 0;
var xTemp = 0;
var yTemp = 0;
public var anim =
Timeline {
autoReverse: false
keyFrames: [
KeyFrame {
time: 0s
values: [x => xTemp, y => yTemp]
},
KeyFrame {
time: 1s
values: [x => xTarget tween
Interpolator.SPLINE(0,.5,.5,1),y => yTarget tween
Interpolator.SPLINE(0,.5,.5,1)]
action: function(): Void{
println("at 1 second ...");
var generator = new Random();
xTarget = (
generator.nextFloat() * 240 + 1) as Integer;
println("xNext {xTarget} ");
yTarget = (
generator.nextFloat() * 320 + 1) as Integer;
println("yNext {yTarget} ");
xTemp=x;
yTemp=y;
}
},
]
repeatCount: Timeline.INDEFINITE
};
}
var dukeAnimModel = DukeAnimModel {}
dukeAnimModel.anim.play();
Stage {
title: "Application title"
width: 240
height: 320
scene: Scene {
content: ImageView {
transforms: Translate {
x: bind dukeAnimModel.x
y: bind dukeAnimModel.y
}
image: Image {
url: dukeAnimModel.imageURL
}
}
}
onClose: function(){
println("exit");
}
}