API Reference 0.7.1rikulo_effectShakeEffect

ShakeEffect class

A shaking effect implemented with CSS rotation on the element.

class ShakeEffect extends EasingMotion {
 
 /** The element to which this effect applies.
  */
 final Element element;
 
 /** Create a ShakeEffect.
  * 
  * + [period]: The period of the effect in terms of millisecond. Default: 500 milliseconds.
  * + [repeat]: The number of times the effect repeats.
  * + [rotation]: The range of rotation in CSS transformation. Default: 10 degree.
  * + [start]: Called when the effect starts.
  * + [end]: Called when the effect ends.
  */
 ShakeEffect(Element element, {int period: 500, int repeat: 1, num rotation: 10,
 MotionStart start, MotionEnd end}) : 
 this.element = element, 
 super(createAction(element, rotation), start: (MotionState state) {
   if (start != null)
     start(state);
   state.data = element.style.transform;
   
 }, end: (MotionState state) {
   element.style.transform = state.data == null ? "" : state.data;
   if (end != null)
     end(state);
   
 }, period: period, repeat: repeat, easing: (num t) => -sin(t * PI * 2));
 
 /** Create a MotionAction which applies CSS rotation to [element].
  */
 static MotionAction createAction(Element element, num rotation) {
   return (num x, MotionState state) {
     element.style.transform = "rotate(${rotation * x}deg)";
   };
 }
 
}

Extends

Motion > EasingMotion > ShakeEffect

Static Methods

MotionAction createAction(Element element, num rotation) #

Create a MotionAction which applies CSS rotation to element.

static MotionAction createAction(Element element, num rotation) {
 return (num x, MotionState state) {
   element.style.transform = "rotate(${rotation * x}deg)";
 };
}

Constructors

new ShakeEffect(Element element, {int period: 500, int repeat: 1, num rotation: 10, MotionStart start, MotionEnd end}) #

Create a ShakeEffect.

  • period: The period of the effect in terms of millisecond. Default: 500 milliseconds.
  • repeat: The number of times the effect repeats.
  • rotation: The range of rotation in CSS transformation. Default: 10 degree.
  • start: Called when the effect starts.
  • end: Called when the effect ends.
ShakeEffect(Element element, {int period: 500, int repeat: 1, num rotation: 10,
MotionStart start, MotionEnd end}) : 
this.element = element, 
super(createAction(element, rotation), start: (MotionState state) {
 if (start != null)
   start(state);
 state.data = element.style.transform;
 
}, end: (MotionState state) {
 element.style.transform = state.data == null ? "" : state.data;
 if (end != null)
   end(state);
 
}, period: period, repeat: repeat, easing: (num t) => -sin(t * PI * 2));

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 int duration #

inherited from EasingMotion
final int period, repeat, duration

final EasingFunction easing #

inherited from EasingMotion
final EasingFunction easing

final Element element #

The element to which this effect applies.

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 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) #

inherited from EasingMotion

Apply the position by MotionAction;

bool doAction_(num x, MotionState state) => action(x, state);

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;
}