我知道我可以像这样设置这个监听器初始化:
buttonSprite = new ButtonSprite(X, Y, mITextureRegion,
mEngine.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
if (pSceneTouchEvent.isActionDown()) {
return true;
}
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
pTouchAreaLocalY);
}
};
这很有效。但我想要这样的事情:
buttonSprite = new ButtonSprite(X, Y, mITextureRegion,
mEngine.getVertexBufferObjectManager());
首先创建它,然后设置onAreaTouched(我猜必须是这样的,但不起作用因为不存在这个setter)
buttonSprite.setOnAreaTouched(new onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
if (pSceneTouchEvent.isActionDown()) {
return true;
}
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
pTouchAreaLocalY);
}
};
我找不到任何模式。这可能吗?
答案 0 :(得分:-1)
你不能,onAreaTouched不是一个事件,它只是sprite类中的一个方法,你可以在子类中覆盖它(比如第一个例子,它是一个匿名子类)。
但是你可以扩展sprite类,为事件创建一个接口,将它的列表添加到新的sprite类并在onAreaTouched中运行它的方法。