2014-02-20 2 views
0

listSprites이라는 목록에 저장된 스프라이트를 생성 할 때 각 스프라이트는 내가 만든 라인 (line3)에 닿아 detached이됩니다. 내가 원하는 것은 그것이 분리되어 (라인 3과 충돌 할 때) 스코어가 단지 1 증가하지만, 이제는 1 분 안에 10,218 리시버처럼 증가합니다. 스프라이트가 분리 된 라인과 충돌하고 스코어가 멈추지 않고 증가하기 시작하면 스프 라이트가 그것과 함께 coliiding하고 있지는 않지만.안드로이드 AndEngine 점수 + = 1 오류가 많이 증가합니다

   /* The actual collision-checking. */ 
       mScene.registerUpdateHandler(new IUpdateHandler() { 
        @Override 
        public void reset() { } 

       @Override 
       public void onUpdate(final float pSecondsElapsed) { 

        } for(Sprite s: listSprites){ 
         if (s.collidesWith(line3)){ 
           mScore += 1; 
           mScene.detachChild(s); 
           mText.setText(" "+mScore+""); 

         } 
        } 
       } 
      }); 

       } 
+0

또한 'listSprites'에서 스프라이트를 제거 하시겠습니까? 나는 엔진이 스프라이트를 "분리"하는 방법을 모르지만, 분리 된 스프라이트가 여전히 충돌 할 수있는 것처럼 보입니다. – Geobits

+0

listSprite.remove (s)를 수행하면 많은 오류가 발생합니다. –

답변

1

collidesWith()은 자식이 연결되어 있는지 여부에 상관하지 않습니다. 그렇다면 listSprites에서 스프라이트를 제거하지 않으려면 목록의 각 스프라이트를 점검하여 충돌 검사 외에 첨부되어 있는지 확인해야합니다.

내가 사용하지 않은 당신은 단지 변화로 간단하게 뭔가를 할 수처럼 andengine 많이 있지만, 소스와 예보고에서, 그것은 보이는

:

if (s.collidesWith(line3)){ 

에 :

if (s.hasParent() && s.collidesWith(line3)){ 

hasParent() 스프라이트가 아무것도 첨부되어 있지 않으면 false를 반환하므로 확인하십시오.

여기서는 사용자가 다른 장면에 스프라이트를 부착하지 않는다고 가정합니다.

+0

get getChildIndex (Sprite) 메서드가 Scene 유형에 대해 정의되지 않았습니다. –

+0

답변 주셔서 감사합니다 죄송합니다, 나는 오래된 소스 파일을보고 있었고, 그들은 그것을 제거했다고 생각합니다. 최신 소스에서's.hasParent()'를 사용하거나'getChildByMatcher()'함수를 검사 할 수 있어야합니다. – Geobits

+0

놀라운 남자, 고마워요. –

관련 문제