2014-06-25 2 views
0

스프라이트 자체를 만졌을 때만 스프라이트를 드래그 가능하게 만드는 방법이 있습니까? 현재 나는 anengine을 사용하는 나의 게임을 가지고 있는데, 장면이 터치 될 때마다 스프라이트가 손가락을 따라 움직이는 위치를 설정합니다. 장면의 반대편을 터치하면 스프라이트가 "텔레포트"됩니다. 이는 내가 원하지 않는 것입니다.터치했을 때 스프라이트를 드래그 가능하게 만들기

스프라이트의 onAreaTouched 메서드를 재정의하여 현재 손가락이있는 곳으로 좌표를 설정했지만이 기능이 잘 작동하지 않습니다. 갑작스런 움직임을 만들면 드래그플러 감이 사라집니다.

이 작업을 수행하는 간단한 방법이 있습니까?

답변

0

내 자신의 질문에 대답 ... 나는이 코드를 사용하고 완벽하게 일 :

 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; 
     } 
    });` 
관련 문제