showShake(delay, duration, strength) {
    return new Promise((resolve, reject) => {
      if (this.outerLayer != null) {
        if (delay == null) { delay = 0.0; }
        if (duration == null) { duration = 0.5; }
        if (strength == null) { strength = 5.0; }
        this.outerLayer.runAction(cc.sequence(
          cc.delayTime(delay),
          Shake.create(duration, strength, UtilsEngine.getGSIWinCenterPosition()),
          cc.callFunc(() => {
            resolve();
          }),
        ));
      } else {
        resolve();
      }
    });
  }
Shows a shake effect on the currently active layer.
@param {Number} [delay=0.0]
@param {Number} [duration=0.5]
@param {Number} [strength=5.0]
@returns {Promise}