我正在构建视频播放器,有点卡在音量滑块部分。这是YouTube风格的垂直滑块,这意味着如果滑块位于顶部位置,音量应为100%,如果将滑块拖动至底部位置,则声音应为0。目前,它的作用与我想要的相反:(

向下拖动滑块会使声音更大,而向上拖动则声音会降低。

这是我下面处理音量滑块的代码。

// Sound Controller Settings ······························
   soundController = new SoundController();
   soundContrColor = soundController.colorChip;
   soundContrGray  = soundController.grayCover;
   soundContrGray.visible     = false;
   soundController.visible    = true;
   soundController.buttonMode = true;
   soundController.soundSlider.addEventListener(MouseEvent.MOUSE_DOWN, sliderDown);

// SoundController Button Mouse Events ························
   public function sliderDown(event:MouseEvent):void
   {
       soundController.soundSlider.startDrag(false, dragBounds);
       soundController.soundSlider.addEventListener(MouseEvent.MOUSE_MOVE, sliderMove);
       soundController.soundSlider.addEventListener(MouseEvent.MOUSE_UP, sliderUp);
       soundContrGray.visible = true;
   }

   public function sliderMove(event:MouseEvent):void
       {
       soundContrGray.height = soundController.soundSlider.y;
       userVolume = Math.round(((soundContrGray.y * soundContrGray.height) / 10) - 4);
       //userVolume = soundContrGray.height;
       setVolume(userVolume);

       trace("soundController.mouseY = "+soundController.soundSlider.y);
       trace("soundContrColor.height = "+Math.round(soundContrGray.height));
       trace("userVolume             = "+userVolume+"\r");

       event.updateAfterEvent();
       }

    public function sliderUp(event:MouseEvent):void
    {
        lastVolPoint = soundContrGray.height;
        setVolume(userVolume);
        event.updateAfterEvent();

        soundController.soundSlider.stopDrag();
        soundController.soundSlider.removeEventListener(MouseEvent.MOUSE_MOVE, sliderMove);
        soundController.soundSlider.removeEventListener(MouseEvent.MOUSE_UP, sliderUp);
    }

当我一直拖动到顶部时,[TRACES]:
soundController.mouseY = 6
soundContrGray.height  = 6
userVolume             = 0

[TRACES]当我一直向下拖动时:
soundController.mouseY = 56
soundContrGray.height  = 56
userVolume             = 30

我相信这就是问题所在:
userVolume = Math.round(((soundContrGray.y * soundContrGray.height) / 10) - 4);

(-4)是一个偏移值,因此当您将其一直拖动以将其关闭时,它是0而不是4。
我需要以某种方式扭转这种状况,因此上面的迹线将交换...下降将使userVolume = 4,上升将使其变为30。

预先感谢任何关注此内容的人! :)

最佳答案

我一定想念一些东西,因为它不可能那么简单,对吗?

userVolume = 30-Math.round(((soundContrGray.y * soundContrGray.height) / 10) - 4);

09-07 08:18