Java Reference
In-Depth Information
Extending Interpolator
You can extend the class Interpolator to create a custom interpolator. Interpolator has one method
that must be overridden. The code in Listing 5-3 provides a trivial example.
Listing 5-3. TrivialInterpolator.fx
public class TrivialInterpolator extends Interpolator{
public override function interpolate(start:Object,end:Object,fraction:Number):Object{
var s:Number = (start as Number);
var e:Number = (end as Number);
return s + (e-s)*fraction;
}
}
The TrivialInterpolator class in Listing 5-3 implements a single function called interpolate . The
function interpolate takes three arguments, start and end, which are both of type Object, and
fraction, which is of type Number . The idea is that the function will return a value, which is a certain
value between start and end . The example in Listing 5-3 is the same as the linear interpolator. If 10.0
and 20.0 are passed in for start and end, and 0.7 is passed in for the fraction , then the function is being
asked for an appropriate value for an animation that is 70% complete. In this case, the value would be
17.0.
After implementing a number of interpolators, it becomes obvious that the preceding code, which
finds the value between start and end, is boilerplate code, and the interesting part is figuring out what to
do with the fraction. For example, how does the EASEBOTH interpolator create those slopes at either end
of the line? It is best to think of an interpolator as a function that takes a value between 0.0 and 1.0 and
generally returns value within the same range. The function should probably return 0.0 for 0.0 and 1.0
for 1.0. To facilitate this concept, JavaFX provides a utility class that can be extended instead of
Interpolator; this class is called SimpleInterpolator . The example in Listing 5-3 can be rewritten as in
Listing 5-4.
Listing 5-4. TrivialSimpleInterpolator.fx
public class TrivialSimpleInterpolator extends SimpleInterpolator{
public override function curve(fraction:Number):Number{
return fraction;
}
}
Since the examples in this topic will be focusing on interpolating numbers, the function curve
makes a lot more sense—for starters it returns a Number, which all of these examples will return.
Tip Interpolators work with values besides Numbers, such as Colors.
Search WWH ::

Custom Search