2013-09-02 3 views
0

안녕하세요, 내 스프라이트가 점점 색이 바래지 않도록하는 데 문제가 있습니다. 필자는 paralell 엔티티 수정자를 사용하고, 스케일링 및 페이딩 후에 스프라이트가 새로운 X 및 Y 좌표를 가져오고 페이드 인하 고 다시 스케일합니다. 그것은 작동하지 않으며 나는 그것이 onUpdate 메소드와 관련이있을 것이라고 생각합니다.AndEngine에서 스프라이트 살생

XOsprite = new Sprite(x, y, XO, engine.getVertexBufferObjectManager()) { 

     @Override 
     public boolean onAreaTouched(final TouchEvent te, final float xVal, 
       final float yVal) { 




      XOsprite.registerEntityModifier(downOut); //kill sprite 
      isKilled = true; 
      XOsprite.registerUpdateHandler(new IUpdateHandler() { 

       @Override 
       public void reset() { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onUpdate(float pSecondsElapsed) { 
        // TODO Auto-generated method stub 

        totalElapsedTime += pSecondsElapsed; 
        if(totalElapsedTime >= 3.0f){ 

         BaseGameActivity gameActivity = (BaseGameActivity) activity; 
         gameActivity.runOnUpdateThread(new Runnable() { 

          @Override 
          public void run() { 
           // TODO Auto-generated method stub 
           if(isKilled){ 
            reviveSprite(); 
            isKilled = false; 
           } 
          } 
         }); 

        } 
        //reset(); 
       } 
      }); 

      return true; 

     } 
    }; 





    XOsprite.registerEntityModifier(inUp); 



    gameScene.attachChild(XOsprite); 
    gameScene.registerTouchArea(XOsprite); 

    return gameScene; 
} 

-edit- 더 많은 코드

public void reviveSprite(){ 

    setSprites(); 
    XOsprite.unregisterEntityModifier(downOut); 
    XOsprite.registerEntityModifier(inUp); 
} 
public void setSprites(){ 

    if (rand.nextInt(2) == 0) { 
     XO = X; 
    } else { 
     XO = O; 
    } 

     x = rand.nextInt(MainActivity.CAM_WIDTH); 
     y = rand.nextInt(MainActivity.CAM_HEIGHT); 

} 
+0

을 할 수 있도록 필요 없습니다 이 실수를 많이하므로 분명히 진술을 제공하십시오 abo 너 뭐하려고하는거야? – Siddharth

답변

0

당신의 UpdateThread에 이미

gameActivity.runOnUpdateThread(new Runnable() { 

         @Override 
         public void run() { 
          // TODO Auto-generated method stub 
          if(isKilled){ 
           reviveSprite(); 
           isKilled = false; 
          } 
         } 
        }); 

그냥 당신은이

      if(isKilled){ 
           reviveSprite(); 
           isKilled = false; 
          } 
+0

나는 당신이 말한 것을 시도했지만 나의 스프 라이트는 여전히 페이딩하지 않고있다. 나는 나의 코드를 좀 더 포함 시켰을지도 모른다. 문제는 엔티티 수식어이다? – HighMrSai

+0

'reviveSprite()'가 호출되고 있습니까? 어쩌면 로그 항목을 추가하여 – jmroyalty

+0

예 디버깅하고 apparantly ..라고 불리는 건 내가 거기에 축배를 만들려고 할 때 그것은 나에게 어떤 이유로 오류를 준다. – HighMrSai

관련 문제