Java Android自定义事件侦听器

Java Android自定义事件侦听器,java,andengine,Java,Andengine,我在android应用程序中使用安卓和Box2d。 如何使我的对象“玩家”抛出一个事件,“游戏场景”订阅它 public class Player { @Override public void Collision(GameObject object) { if(object instanceof Coin) { //throws an event here } } } public class GameScene { private Play

我在android应用程序中使用安卓和Box2d。
如何使我的对象“玩家”抛出一个事件,“游戏场景”订阅它

public class Player {

  @Override
  public void Collision(GameObject object) {
    if(object instanceof Coin) {
        //throws an event here
    }
  }
}

public class GameScene {
  private Player player = new Player();
  //catch the event here

}

您应该使用
界面
s

制作一个类似以下内容的界面:

public interface Something
{
  void doSomething(GameObject object);
}
其中,
doSomething
是将被调用的方法(在这种情况下可以是
objectCollision
),与接口名称(
objectcollister
(?)相同)

然后让游戏场景实现它

public class GameScene implements Something
并实现了该方法

在Player类中,向以下对象添加侦听器:

public class Player {
 private Something listener;
在构造函数中,询问侦听器:

public Player(Something listener) { this.listener = listener; }
然后调用它,只需使用

listener.doSomething(object);
例如:

public void Collision(GameObject object) {
   if(object instanceof Coin) {
     //throws an event here
     listener.doSomething(object);
   }
}
要使用此构造函数创建播放器对象,只需执行以下操作:

Player player = new Player(this); // if you implement the method in the class

您应该使用
接口
s

制作一个类似以下内容的界面:

public interface Something
{
  void doSomething(GameObject object);
}
其中,
doSomething
是将被调用的方法(在这种情况下可以是
objectCollision
),与接口名称(
objectcollister
(?)相同)

然后让游戏场景实现它

public class GameScene implements Something
并实现了该方法

在Player类中,向以下对象添加侦听器:

public class Player {
 private Something listener;
在构造函数中,询问侦听器:

public Player(Something listener) { this.listener = listener; }
然后调用它,只需使用

listener.doSomething(object);
例如:

public void Collision(GameObject object) {
   if(object instanceof Coin) {
     //throws an event here
     listener.doSomething(object);
   }
}
要使用此构造函数创建播放器对象,只需执行以下操作:

Player player = new Player(this); // if you implement the method in the class
你可以用它

发出信号

interface IGameSignal{
    void gameHandler();
}

class GameSignal extends Signal<IGameSignal> implements IGameSignal{

    void gameHandler(){
        dispatch();    
    }
}
当你需要的时候,从你需要的地方发出信号

Class A{
    GameSignal gameSignal = Factory.inject(GameSignal.class);

    void execute(){
        // dispatch the signal, the callback will be invoked on the same thread
        gameSignal.gameHandler();
    }        
}
免责声明:我是android生命周期的作者。

你可以用它

发出信号

interface IGameSignal{
    void gameHandler();
}

class GameSignal extends Signal<IGameSignal> implements IGameSignal{

    void gameHandler(){
        dispatch();    
    }
}
当你需要的时候,从你需要的地方发出信号

Class A{
    GameSignal gameSignal = Factory.inject(GameSignal.class);

    void execute(){
        // dispatch the signal, the callback will be invoked on the same thread
        gameSignal.gameHandler();
    }        
}
免责声明:我是安卓生命周期的作者