我需要在一些扩展Entity类的类中添加一个触摸事件,但它似乎不起作用。
为Sprites,AnimatedSprites和基元做这样的事情就像一个魅力就像做一样:
Sprite s = new Sprite(...){
public boolean onAreaTouched(...){
...
return true;
}
}
registerTouchArea(s);
但是当应用于实体或扩展实体的类时,这不起作用。
你知道在这种情况下应该做些什么吗? 甚至可以在Entity类上使用onAreaTouched吗?如果不是,那将是一个什么样的解决方法?
请帮忙
答案 0 :(得分:0)
这很容易。请遵循以下代码
制作示例实体。代码是自我描述性的。
public class Example extends Entity implements IOnAreaTouchListener {
public Rectangle aSprite;
public Example(float pX, float pY,
VertexBufferObjectManager pVertexBufferObjectManager) {
// initialize your sprite & it's touch implementation
aSprite = new Rectangle(pX, pY, 40, 40, pVertexBufferObjectManager) {
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
if (pSceneTouchEvent.isActionUp()) {
Log.e("Rectangle aSprite", "isActionUp");
return true;
}
return false;
}
};
}
@Override
public void onAttached() {
super.onAttached();
}
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
ITouchArea pTouchArea, float pTouchAreaLocalX,
float pTouchAreaLocalY) {
aSprite.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
pTouchAreaLocalY);
return false;
}
}
在自定义场景类或 onCreateScene ()中,写一下
Example example = new Example(80, 80, getVertexBufferObjectManager());
mCurrentScene.attachChild(example.aSprite);
mCurrentScene.registerTouchArea(example.aSprite);