让精灵可以拖动当触摸

问题描述:

有没有办法让精灵拖动,但只有当精灵本身被触摸?目前,我有我的游戏,它使用anengine,设置精灵跟随你的手指在场景被触及时的位置。如果你触摸场景的另一面,精灵会“传送”,这是我不想要的。让精灵可以拖动当触摸

我试着覆盖精灵的onAreaTouched方法,并将它的坐标设置为你的手指目前的位置,但这不太适用。如果你突然动作,拖延性就会消失。

有没有简单的方法来完成这个?

回答我的问题......我用这个代码,它完美地工作:

 draggableSprite = new Sprite(CAM_WIDTH/2, CAM_HEIGHT/2, 
     spriteTextureRegion, mVertexBufferObjectManager){ 

     @Override 
     public boolean onAreaTouched(TouchEvent pSceneTouchEvent, 
       float pTouchAreaLocalX, float pTouchAreaLocalY) { 

       if(pSceneTouchEvent.isActionMove()){ 
        spriteIsTouched = true; 
       } 
       else{ 
        spriteIsTouched = false; 
       } 
      return super 
        .onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); 
     } 

    }; 
    scene.attachChild(draggableSprite); 
    scene.registerTouchArea(draggableSprite); 

    scene.setOnSceneTouchListener(new IOnSceneTouchListener() { 

     @Override 
     public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 
      // TODO Auto-generated method stub 

      if(spriteIsTouched){ 
       draggableSprite.setPosition(pSceneTouchEvent.getX() - (draggableSprite.getWidth()/2), pSceneTouchEvent.getY() - (draggableSprite.getHeight()/2)); 
       //This sets the position of the sprite and then 
       //offsets the sprite so its center is at your finger 
      } 


      return false; 
     } 
    });`