当行动正在进行时,libgdx禁用触摸

时间:2017-11-16 21:08:25

标签: java android libgdx

我无法弄清楚,DragListener上正在进行的Action时如何临时停用Actor。当正在进行Actor时我触摸Action时,它会被中断并执行新的Action,这会导致Actor的“漂移”。例如我摇动Actor,但当它被中断时,以下Action基于Actor的中断位置。

touchUp方法中添加操作:

RotateByAction rotL = new RotateByAction();
rotL.setAmount(-3);
rotL.setDuration(0.05f);

RotateByAction rotR = new RotateByAction();
rotR.setAmount(6);
rotR.setDuration(0.05f);

RotateByAction rotBack = new RotateByAction();
rotBack.setAmount(-3);
rotBack.setDuration(0.05f);

SequenceAction seq = new SequenceAction();
seq.addAction(rotL);
seq.addAction(rotR);
seq.addAction(rotBack);

temp.setOrigin(temp.getWidth()/2,temp.getHeight()/2);

temp.addAction(seq);

我尝试在Actor

的Render方法中执行类似的操作
if (this.getActions().size > 0){//or hasActions()
            this.setTouchable(Touchable.disabled);
        }
        else{
            this.setTouchable(Touchable.enabled);
        }

但这让Actor无法接触!

1 个答案:

答案 0 :(得分:2)

您应该做的是使用Actions.touchable在动作开始时禁用触摸,然后在结束时再次启用它。您还可以使用sequenceparallel将多个操作串在一起。

temp.addAction(Actions.sequence(
    Actions.touchable(Touchable.disabled),
    rotL,
    rotR,
    rotBack,
    Actions.touchable(Touchable.enabled)
));