API Reference 0.7.1rikulo_effectLinearPathMotion

LinearPathMotion class

An EasingMotion with action of move an Element along a linear trajectory.

class LinearPathMotion extends EasingMotion {
 
 final Element element;
 final Function _moveCB;
 final Point origin, destination, _diff; 
 Point _pos;
 
 /** Construct a linear position motion.
  * + [element] is the element to move.
  * + [origin] is the starting offset of the element.
  * + [destination] is the goal offset of the movement.
  * + [move] is invoked continuously during the motion, and if this callback is
  * provided, [defaultAction()] shall be called to attain the default 
  * behavior of LinearPathMotion.
  */
 LinearPathMotion(Element element, Point origin, Point destination, 
   {EasingFunction easing, int period: 500, MotionStart start, 
   bool move(MotionState state, Point position, num x, void defaultAction()), 
   MotionEnd end}) :
   this.element = element, this.origin = origin, this.destination = destination, 
   _diff = destination - origin, _moveCB = move, 
   super(null, easing: easing, period: period, start: start, end: end);
 
 bool doAction_(num x, MotionState state) {
   _pos = _diff * x + origin;
   if (_moveCB == null) {
     _applyPosition();
     return true;
   }
   return !identical(_moveCB(state, _pos, x, _applyPosition), false);
 }
 
 void _applyPosition() {
   element.style.left = CssUtil.px(_pos.x);
   element.style.top = CssUtil.px(_pos.y);
 }
 
 /** Retrieve the current position of the element.
  */
 Point get currentPosition => _pos;
 
}

Extends

Motion > EasingMotion > LinearPathMotion

Constructors

new LinearPathMotion(Element element, Point origin, Point destination, {EasingFunction easing, int period: 500, MotionStart start, bool move(MotionState state, Point position, num x, void defaultAction()), MotionEnd end}) #

Construct a linear position motion. + element is the element to move. + origin is the starting offset of the element. + destination is the goal offset of the movement. + move is invoked continuously during the motion, and if this callback is provided, defaultAction() shall be called to attain the default behavior of LinearPathMotion.

LinearPathMotion(Element element, Point origin, Point destination, 
 {EasingFunction easing, int period: 500, MotionStart start, 
 bool move(MotionState state, Point position, num x, void defaultAction()), 
 MotionEnd end}) :
 this.element = element, this.origin = origin, this.destination = destination, 
 _diff = destination - origin, _moveCB = move, 
 super(null, easing: easing, period: period, start: start, end: end);

Properties

final MotionAction action #

inherited from EasingMotion
final MotionAction action

final Animator animator #

inherited from Motion

The Animator associated with the motion.

Animator get animator => _animator;

final Point currentPosition #

Retrieve the current position of the element.

Point get currentPosition => _pos;

final Point destination #

final Point origin, destination

final int duration #

inherited from EasingMotion
final int period, repeat, duration

final EasingFunction easing #

inherited from EasingMotion
final EasingFunction easing

final Element element #

final Element element

final bool isPaused #

inherited from Motion

Return true if the motion is at paused state.

bool get isPaused => _stateFlag == _MOTION_STATE_PAUSED;

final bool isRunning #

inherited from Motion

Return true if the motion is at running state.

bool get isRunning => _stateFlag == _MOTION_STATE_RUNNING;

final Point origin #

final Point origin

final int period #

inherited from EasingMotion
final int period

final int repeat #

inherited from EasingMotion
final int period, repeat

final MotionState state #

inherited from Motion

Retrieve the current MotionState. null if not running.

MotionState get state => _state;

Methods

bool doAction_(num x, MotionState state) #

Apply the position by MotionAction;

docs inherited from EasingMotion
bool doAction_(num x, MotionState state) {
 _pos = _diff * x + origin;
 if (_moveCB == null) {
   _applyPosition();
   return true;
 }
 return !identical(_moveCB(state, _pos, x, _applyPosition), false);
}

num doEasing_(num t) #

inherited from EasingMotion

Compute position value by EasingFunction.

num doEasing_(num t) => easing != null ? easing(t) : t;

void onEnd(MotionState state) #

inherited from Motion

Called after the runner returns false. Calling stop() will not invoke this function.

void onEnd(MotionState state) {
 if (_end != null)
   _end(state);
}

bool onMove(MotionState state) #

inherited from EasingMotion

Called in each animator iteration, when the motion is at running state.

docs inherited from Motion
bool onMove(MotionState state) {
 final int runningTime = state.runningTime;
 final bool result = doAction_(doEasing_(_easingInput(runningTime)), state);
 return (repeat < 0 || runningTime < duration) && !identical(result, false);
}

void onPause(MotionState state) #

inherited from Motion

Called in the first animator iteration after the motion is paused.

void onPause(MotionState state) {}

void onResume(MotionState state) #

inherited from Motion

Called in the first animator iteration after the motion is resumed from pause.

void onResume(MotionState state) {}

void onStart(MotionState state) #

inherited from Motion

Called in the first animator iteration after the motion is added into animator.

void onStart(MotionState state) {
 if (_start != null)
   _start(state);
}

void pause() #

inherited from Motion

Pause the motion.

void pause() {
 if (_stateFlag != _MOTION_STATE_RUNNING)
   return;
 _stateFlag = _MOTION_STATE_PAUSED;
}

void run() #

inherited from Motion

Start the motion, or resume it from a pause.

void run() {
 switch (_stateFlag) {
   case _MOTION_STATE_RUNNING:
     return;
   case _MOTION_STATE_PAUSED:
     _stateFlag = _MOTION_STATE_RUNNING; // resume
     break;
   case _MOTION_STATE_INIT:
     animator.add(this._task);
     break;
 }
}

void skip() #

inherited from EasingMotion

Skip to the end of motion.

void skip() {
 if (_state != null)
   doAction_(1, _state.._snapshot(new DateTime.now().millisecondsSinceEpoch));
 super.stop();
}

void stop() #

inherited from Motion

Stop the motion and reset the internal states.

void stop() {
 animator.remove(this._task);
 _state = null;
 _stateFlag = _MOTION_STATE_INIT;
}