package br.com.etyllica.core.animation.script.complex; import br.com.etyllica.layer.Layer; public class HorizontalShakeScript extends ShakeScript { private int initialX = 0; public HorizontalShakeScript(Layer target, long time) { super(target, time); initialX = target.getX(); } @Override public void calculate(double factor) { double division = 1/(double)repeatTimes; int interval = (int)(factor/division); double part = interval+1 - (factor/division); double slice = part; if(interval%2 == 0) { slice = 1-slice; } double startValue = initialX-strength; double endValue = initialX+strength; double value = startValue+(endValue-startValue)*slice; target.setX((int)value); } }