横版游戏屏幕震动的算法

就是背景坐标动动嘛,也可以同时给背景加个模糊滤镜,看起来更晕一些。。。

整个地图稍微x+多少。正负一会儿,y加多少,正负一会儿,就行啦。

第一段用TweenLite實現
private function shake():void {
      TweenLite.from($view, 1, {ty:10, ease:Elastic.easeOut, overwrite:true});
    }

這個測試感覺第一下有些突然。我打算另外做一些測試來對比效果。
然後我打算按你的方法寫一個Ease類提供給TweenLite使用。稍後繼續。

我封了一個緩衝類,這個就是實現你說的方式。可以直接用來設定在TweenLite的ease參數中。
不過我感覺效果也並不是那麼的好。對比兩種效果你覺得哪個更好一些?
 

package starpulse.tween.ease {
  public class Shake {
    public static function easeOut (t:Number, b:Number, c:Number, d:Number):Number {
      return c * ((uint(t / d * 1000) % 2 == 0 ? 1 : -1) > 0 ?  t / d : (2 * d - t) / d)
    }
  } // <- end class ->
}

 

關於這段緩衝計算方式的由來

/*
      // 先計算到當前的緩衝進度。
      var percent:Number = t / d;
      // 然後通過進度1000倍數的精度求出當前的偏移量方向正或者是負
      var direction:Number = uint(percent * 1000) % 2 == 0 ? 1 : -1;
      // 如果是正向則按常規返回進度     否則     返回反方向進度
      return c * (direction  > 0 ? t / d : (2 * d - t) / d) + b;
      */

 

 

你可能感兴趣的:(Flash/AS3)