S40 Touch API - Frame Animator API
Frame Animator API 用來計算動力學(xué)和線性內(nèi)插動畫。例如,可以用于處理滑動或拖拽動作。相關(guān)文檔可以參考 S40 Touch API (1) - Gesture API。
第一步
參考文檔 S40 Touch API (1) - Gesture API中的說明,先定義一個GestureListener ,然后實現(xiàn)FrameAnimatorListener接口。
class FrameAnimatorCanvas extends Canvas implements FrameAnimatorListener
{
public void animate(FrameAnimator frameAnimator,
short x, short y,
short delta, short deltaX, short deltaY,
boolean lastFrame) {
. . .
}
}
第二步
創(chuàng)建一個FrameAnimator實例,并注冊FrameAnimatorListener接口。
frameAnimator = new FrameAnimator();
frameAnimator.register(centerX, centerY, maxFps, maxPps, this);
第三步
在GestureListener 接口中的gestureAction()方法里,觸發(fā)FrameAnimator的drag()和kineticScroll()方法,開始動畫的計算和繪制。
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()
);
... ...
代碼示例
Media:FrameAnimator.zip運行這個例子后,試著做一下flick,是不是很有意思!