2
这个触摸事件永远不会触发缓解作用。我一直在通过例子和源代码,现在我对做我想做的最好的方法有些困惑。如何正确使用触摸监听器/事件和andEngine
我画一个精灵到现场。我希望该精灵能够通过EaseFunction移动到用户触摸事件的坐标。
这是到目前为止的代码:
private static final int CAMERA_WIDTH = 720;
private static final int CAMERA_HEIGHT = 480;
// ===========================================================
// Fields
// ===========================================================
private Camera mCamera;
private BitmapTextureAtlas mTexture;
private TextureRegion mFaceTextureRegion;
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public Engine onLoadEngine() {
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
}
@Override
public void onLoadResources() {
this.mTexture = new BitmapTextureAtlas(64, 32, TextureOptions.BILINEAR);
this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/boxface.png", 0, 0);
this.getEngine().getTextureManager().loadTexture(this.mTexture);
}
@Override
public Scene onLoadScene() {
this.getEngine().registerUpdateHandler(new FPSLogger());
final Scene scene = new Scene();
scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));
final int x = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth())/2;
final int y = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight())/2;
final Sprite face = new Sprite(x, y, this.mFaceTextureRegion);
scene.attachChild(face);
face.setPosition(134, 200);
//这是我尝试实现触摸监听器和代码//是不是?
scene.setOnAreaTouchListener(new IOnAreaTouchListener() {
//@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,ITouchArea pTouchArea, float pTouchAreaLocalX,float pTouchAreaLocalY) {
if(pSceneTouchEvent.isActionDown()) {
int facePosX = (int) (pSceneTouchEvent.getX() - face.getWidth()/2);
int facePosY = (int) (pSceneTouchEvent.getY() - face.getHeight()/2);
face.registerEntityModifier(new MoveModifier(500, face.getX(), facePosX, face.getY(),facePosY,EaseQuadIn.getInstance()));
}
return false;
}
});
return scene;
}
@Override
public void onLoadComplete() {
}
终于我很确定我需要使用pScene.registerTouchArea(face);和 pScene.setTouchAreaBindingEnabled(true);
任何澄清会有很大的用途。 谢谢
我找到了答案。但即时新的。所以我必须等待4个小时才能回答我自己的帖子。 – 2012-02-19 06:31:44