在LIBGDX处理事件。该事件同时在两个地方注册

时间:2018-11-19 00:13:40

标签: java events libgdx mouseevent

我正在创建回合打底游戏,但我遇到的问题是我想创建一个按钮,可以单击它,然后需要单击目标敌人。

到目前为止,这是我拥有的代码的一部分:

public class FightScreen extends BaseScreen {
    LevelScreen previousMap;
    Champion fighterOne;
    boolean turn = true; //variable to set the turn of the player, if true is players turn, otherwise enemy turn
    EnemyFighters enemyOne;
    EnemyFighters enemyTwo;
    EnemyFighters enemyThree;
    boolean firstAttack = false;


public FightScreen(LevelScreen prev){
    super();
    previousMap = prev;
}


public void initialize() {
    //initialize the mapbackground
    BaseActor fightBackground = new BaseActor(0,0, mainStage);
    fightBackground.loadTexture( "assets/img/dungeon.png" );
    fightBackground.setSize(800,600);
    //initialize the actors at the screen
    fighterOne = new WarriorOne(mainStage);
    enemyOne = new BatFighter(mainStage);
    enemyTwo = new SkeletonFighter(mainStage);
    enemyThree = new ZombieFighter(mainStage);


    //create the buttons
    uiStage.addActor(fighterOne.getFirstButton());


    fighterOne.getFirstButton().addListener(
            (Event e) ->
            {

                if ( !(e instanceof InputEvent) )
                    return false;

                if ( !((InputEvent)e).getType().equals(InputEvent.Type.touchDown) )
                    return false;
                if (!(turn))
                    return false;
                firstAttack = true;
                System.out.println("we need a target please!");
                return true;
            }
    );
    enemyTwo.addListener(
            (Event o) ->
            {
                if ( !(o instanceof InputEvent) )
                    return false;

                if ( !((InputEvent)o).getType().equals(InputEvent.Type.touchDown) ){
                    return false;
                }
                if (firstAttack){
                    fighterOne.attackOne(enemyTwo);
                    firstAttack = false;
                    System.out.println("we delivered the attack! viva");
                    turn = !turn;
                }else
                    return false;

                return true;
            }
    );

}

public void update(float dt) {
    if (!(turn)){      
        enemyOne.attackOne(fighterOne);
        turn = !(turn);
        System.out.println("we got attacked by enemy");
        System.out.println("Our hero health is: "+ fighterOne.getHP());

    }
    if (Gdx.input.isButtonPressed(Input.Buttons.RIGHT)){
        System.out.println("setting attack to false");
        firstAttack = false;
    }
}

}

我的问题是,当我按鼠标左键时,fighterOne的eventListener和update中的监听器都是蜂鸣声。

是否有一种方法只能在类的update方法中没有对象被单击时侦听Leftclick?

谢谢。

0 个答案:

没有答案
相关问题