Java Reference

In-Depth Information

def circ = Circle { centerX: 25 centerY: 100 radius: 25 };

var t = Timeline {

autoReverse:true

repeatCount:Timeline.INDEFINITE

keyFrames: [

at(2s) {

circ.centerX => 375

tween
MagneticInterpolator
{attraction:0.07}

}

]

};

The next figure depicts how the circle's
centerX
property is interpolated using the

MagneticInterpolator
class.

How it works...

Given a start and an end value, interpolation provides the ability to algorithmically deduce an

in-between target value given ratio
t
where
0.0 <= t <= 1.0
. For instance when
t = 1.0
,

most interpolators will return the end value. In JavaFX, to implement your own interpolator, you

can either start from scratch and extend the
Interpolator
abstract class, where you will be

responsible for providing your own interpolation algorithm. Or, you can extend the ready-made

SimpleInterpolator
class, which implements a simple linear algorithm.

For the implementation of the
MagneticInterpolator
class, we use the latter approach and

extend
SimpleInterpolator
, because we expect values to be calculated in a linear fashion.

The
MageneticInterpolator
class exposes a property called
attraction:Number
which,

to keep things simple, is the
t
value beyond or below which (depending on direction) will snap

to the final target value. As shown in the previous figure, when the Interpolator goes past time

value
t
a
the location of the circle along the x-axis snaps to
375
.