使用touchDragged(libGDX)上下调整音量

时间:2015-09-26 22:07:06

标签: java libgdx

在此图片中enter image description here如何使用touchDragged仅在x轴中拖动此enter image description here

这是我执行此操作的代码:

iBtnDrag = new Image(tBtnDrag);
iBtnDrag.addListener(new ClickListener() {

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            return true;
        }

        @Override
        public void touchDragged(InputEvent event, float x, float y, int pointer) {
            iBtnDrag.setPosition(x, 448, Align.center);
        }
});

1 个答案:

答案 0 :(得分:1)

你应该创建DragListener

    ...

    float startX;

    DragListener listener = new DragListener()
    {
        public void dragStart(InputEvent event, float x, float y, int pointer)
        {
            startX = x;
        }

        public void drag(InputEvent event, float x, float y, int pointer)
        {   
            //x, y are delta from starting point so
            iBtnDrag.setPosition(startX + x, 448, Align.center);
        }

        public void dragStop(InputEvent event, float x, float y, int pointer)
        {
            //when stopping drag
        }
    };

buuuut更好的方法是创建Slider 。为实现这一目标,最好使用skin mechanism

你的皮肤文件应该是例如:

    com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: 
    {
        default-horizontal: { background: greenBackground, disabledBackground: sliderDisabled, knob: woodenKnob, disabledKnob: transparent },
    },

然后你正在创建像

这样的滑块
    music= new Slider(minValue, maxValue, stepSize, isVertical, skin);
    music.setWidth( musicSiderWidth );

Slider允许您通过调用

来获取其值
    music.getValue();

实际上很方便