2014-03-12 65 views
1

我需要添加一個觸摸事件擴展實體類的一些類,但它似乎不工作。Andengine觸摸事件爲實體

做這個精靈,AnimatedSprites和基本工作原理就像一個魅力只是做類似:

Sprite s = new Sprite(...){ 
    public boolean onAreaTouched(...){ 
      ... 
    return true; 
    } 
} 
registerTouchArea(s); 

但是當應用到實體或擴展實體類這不起作用。

你知道在這種情況下應該做什麼嗎? 它甚至有可能在實體類上使用onAreaTouched?如果不是,那將是一個什麼工作?

請幫忙

回答

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);