如何在Flash AS3中构建自定义滑块?

时间:2016-12-17 15:51:57

标签: javascript actionscript-3 flash

我需要一些帮助制作自定义滑块,有点像你用于音量按钮的滑块。我有一个,但它不是多用的;一旦我在停止工作之前添加了多个,我认为我不能使用局部变量,因为我需要使用事件监听器来滑动擦除器。

我要问的是,如果有人可以请一个多用途滑块的代码,并说明它是如何工作的,所以我可以从中学习。我现在可以显示我正在使用的代码,但它可能没用。

public function createSlider(x:Number, y:Number, parent:DisplayObjectContainer) : void {
        this.slider = new Sprite();
        this.slider.graphics.beginFill(0xFFFFFF);
        this.slider.graphics.drawCircle(x, y, 7);
        this.slider.graphics.endFill();
        this.bar = makeRoundedRect(x - 6, y - 6, 100, 11, 0xCCCCCC, 1, [10, 10, 10, 10]);
        parent.addChild(bar);
        parent.addChild(slider);

        this.slider.addEventListener(MouseEvent.MOUSE_OVER, sliderHover);
    }

    private function sliderHover(e:MouseEvent) : void 
    {
        this.slider.addEventListener(MouseEvent.MOUSE_DOWN, sliderDown);
    }
    private function sliderDown(e:MouseEvent) : void {
        this.slider.addEventListener(MouseEvent.MOUSE_MOVE, sliderMove);
        this.slider.addEventListener(MouseEvent.MOUSE_UP, sliderDone);
        this.slider.addEventListener(MouseEvent.MOUSE_OUT, sliderDone);
    }

    private function sliderMove(e:MouseEvent) : void {
        this.slider.addEventListener(MouseEvent.MOUSE_DOWN, sliderDown);
        this.slider.removeEventListener(MouseEvent.MOUSE_MOVE, sliderMove);
        this.slider.startDrag(false, new Rectangle(0, slider.y, 90, 0));

    }
    private function sliderDone(e:MouseEvent) : void {
        this.temp_mouseCurX = Math.abs(this.slider.x + 10);
        trace(this.temp_mouseCurX);
        this.slider.stopDrag();
    }

它正在使用一个私有变量,我知道它不应该对我想做的事情有好处。

1 个答案:

答案 0 :(得分:1)

您应该尝试使用e.currentTarget。而不是this.slider。