Java Android自定义事件侦听器
我在android应用程序中使用安卓和Box2d。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
如何使我的对象“玩家”抛出一个事件,“游戏场景”订阅它
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();
}
}
免责声明:我是安卓生命周期的作者