The Frame Animator API is used to calculate dynamics and linear interpolation animations. For example, it can be used to handle slide or drag operations. For more information, see S40 Touch API (1)-Gesture API.
Step 1
Refer to the descriptions in S40 Touch API (1)-Gesture API. First define a GestureListener and then implement the FrameAnimatorListener interface.
class FrameAnimatorCanvas extends Canvas implements FrameAnimatorListener
{
public void animate(FrameAnimator frameAnimator,
short x, short y,
short delta, short deltaX, short deltaY,
boolean lastFrame) {
. . .
}
}
Step 2
Create a FrameAnimator instance and register the FrameAnimatorListener interface.
frameAnimator = new FrameAnimator();
frameAnimator.register(centerX, centerY, maxFps, maxPps, this);
Step 3
In the GestureListener interface's gestureAction) method, trigger the drag () and kineticScroll () Methods of FrameAnimator to start animation calculation and painting.
public void gestureAction(Object container, GestureInteractiveZone gestureZone, GestureEvent event) {
switch( event.getType() );
case GestureInteractiveZone.GESTURE_DRAG:
frameAnimator.drag( event.getStartX()+event.getDragDistanceX(), event.getStartY() +event.getDragDistanceY() );
... ...
case GestureInteractiveZone.GESTURE_FLICK:
frameAnimator.kineticScroll( event.getFlickSpeed(), FrameAnimator.FRAME_ANIMATOR_FREE_ANGLE,
FrameAnimator.FRAME_ANIMATOR_FRICTION_MEDIUM, event.getFlickDirection()
);
... ...
Sample Code
Media: FrameAnimator.zip. After running this example, try flick!