SoundManager,Scrub bar,无法正常工作

时间:2012-10-28 04:48:56

标签: javascript soundmanager2

首先,我在我的网站上使用SoundManager,

但我在将其添加到我的网站时遇到问题,为了更好地了解问题,请先查看网站:http://tinyurl.com/8bugpc7

我试图通过网站阻止声音管理器。该网站有点垂直滑块。所以有一个菜单,但所有项目都链接到页面的特定类。音乐链接是第三种选择(第3页)。但是当我添加360音乐播放器时,擦洗条无法正常工作,这意味着无论我在哪个栏上点击它,它都只会到达特定的地方。实际上它不会在我点击的地方播放。

但是当我将播放器移动到第一类(第一页)时,擦洗条正常工作。所以我猜这些以前的类(页面)存在问题。

我花了几个小时但真的无法理解这个问题,任何人都可以为我检查并告诉我有什么问题吗?

如果您需要下载文件,请点击以下链接: http://tinyurl.com/8q83gzu

提前致谢。

2 个答案:

答案 0 :(得分:0)

在360player.js中有一个函数叫做:701。寻找:

this.mmh = function(e) {

这里deltaX变量计算错误,很可能是由于您的轮播所产生的偏移。我通过从deltaX变量中减去相同的偏移量来解决页面上的问题。 这是使用伪代码修改它的新函数:

this.mmh = function(e) {
  /**
   * Here you need to find the offset from the left of the page
   * and assign it to a variable. In your case, it is simply the window's
   * width multiplied by 2.
  */
  offSet = 2 * $(window).width();
  if (typeof e === 'undefined') {
    e = window.event;
  }
  var oSound = self.lastTouchedSound,
      coords = self.getMouseXY(e),
      x = coords[0],
      y = coords[1],
      /* here you subtract your offset and scrubbing should work again */
      deltaX = x-(oSound._360data.canvasMidXY[0]-offSet),
      deltaY = y-oSound._360data.canvasMidXY[1],
      angle = Math.floor(fullCircle-(self.rad2deg(Math.atan2(deltaX,deltaY))+180));
  oSound.setPosition(oSound.durationEstimate*(angle/fullCircle));
  self.stopEvent(e);
  return false;
};

答案 1 :(得分:0)

我解决了类似的问题(感谢Michael Schmid的灵感!:)与Flexslider轮播。每张幻灯片上都有一个SM2播放器,因此需要减去偏移量。从360player.js中的第702行开始替换该函数,使用:

this.mmh = function(e) {
    //Get offset of Flexslider slide to resolve SM2 scrubber issue
    var fslide = $(".slides").attr("style").split("translate3d(");
    var offSet = fslide[1].substring(0,fslide[1].indexOf("px,"));
    if (parseInt(offSet) != 0) {
        offSet = parseInt(offSet);
    } else {
        offSet = 0;
    }

    if (typeof e === 'undefined') {
      e = window.event;
    }
    var oSound = self.lastTouchedSound,
        coords = self.getMouseXY(e),
        x = coords[0],
        y = coords[1],
        // deltaX = x-oSound._360data.canvasMidXY[0],
        deltaX = x-(oSound._360data.canvasMidXY[0]+offSet),
        deltaY = y-oSound._360data.canvasMidXY[1],
        angle = Math.floor(fullCircle-(self.rad2deg(Math.atan2(deltaX,deltaY))+180));

    oSound.setPosition(oSound.durationEstimate*(angle/fullCircle));
    self.stopEvent(e);
    return false;

};

你找到了解决方案Dan?