发现AndEngine没有传统的Button。
于是自己继承源码并实现了一个,具有基本的onClick事件
最为基本类,可以继承并实现状态按钮,自更新按钮等。
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.camera.hud.HUD;
import org.anddev.andengine.entity.layer.ILayer;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.input.touch.detector.ClickDetector;
import org.anddev.andengine.input.touch.detector.ClickDetector.IClickDetectorListener;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import android.util.Log;
public class XDButtonBase extends HUD implements IClickDetectorListener {
//fields
private Sprite mControlButton;
private TextureRegion onStateRegin = null;
private final XDButtonClickListener mXDButtonClickListener;
//Constructors
public XDButtonBase(final int pX, final int pY, final Camera pCamera, final TextureRegion pOnRegion, final float pTimeBetweenUpdates, final XDButtonClickListener pXDButtonClickListener) {
this.setCamera(pCamera);
this.mXDButtonClickListener = pXDButtonClickListener; //控制外面
this.onStateRegin = pOnRegion;
this.mControlButton = new Sprite(pX, pY, pOnRegion) {
//控制内部变化
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
Log.i("ST", "onAreaTouched");
mXDButtonClickListener.onClick(this);
return false;
}
};
final ILayer bottomLayer = this.getBottomLayer();
bottomLayer.addEntity(this.mControlButton);
this.setTouchAreaBindingEnabled(true);
}
@Override
public void onClick(ClickDetector pClickDetector, TouchEvent pTouchEvent) {
//不知道如何触发
Log.i("ST","onClick ST");
}
public interface XDButtonClickListener{
public void onClick(final Sprite sprite);
}
}