2012-04-25 1 views
2

나는 스프라이트로 장면에 10 장의 그림을 가지고있다. 그리고 그들은 배열에있다. 그림 (스프라이트)은 MoveModifier에 의해 장면 위로 움직이고있다. 나는 이것을 원한다 : 나는 어떤 그림을 만질 때, 내가 만진 그림은 보이지 않아야한다. 내 코드가 19 때문에 작동하지 않습니다. line (circleles [i] .setVisible (false);) 이클립스는 final (변수)을 사용한다고 말합니다. 배열의 인덱스를 변경해야하므로 할 수 없습니다. .내가 무엇을 할 수 있을지?Andengine Sprite가 배열로 하나를 만졌습니까?

final int totalCircleNumber=10; 
    int circleNumber=0; 
    private Sprite[] circles = new Sprite[totalCircleNumber]; 
    private Runnable mStartCircle = new Runnable() { 
    public void run() { 
     int i=circleNumber++; 
     Scene scene = Level1Activity.this.mEngine.getScene(); 
     float startX = randomNumber.nextFloat()*(CAMERA_WIDTH); 
     float startY = -64.0f; 
     float finishX= randomNumber.nextFloat()*(CAMERA_WIDTH); 
     float finishY= CAMERA_HEIGHT+64.0f; 
     int j= randomNumber.nextInt(50); 
     circles[i] = new Sprite(startX, startY, textRegCircle[j]){ 
      @Override 
      public boolean onAreaTouched(final TouchEvent pAreaTouchEvent,final float pTouchAreaLocalX, final float pTouchAreaLocalY) { 

       if(pAreaTouchEvent.isActionDown()) 
       {          
        circles[i].setVisible(false); 

       }     
       return true; 
       } 
     }; 


     scene.registerTouchArea(circles[i]); 


     circles[i].registerEntityModifier(
       (IEntityModifier) new SequenceEntityModifier (
          new MoveModifier(velocityOfCircle, circles[i].getX(), finishX, 
            circles[i].getY(), finishY))); 

     scene.getLastChild().attachChild(circles[i]); 
     if (circleNumber < totalCircleNumber){ 
      mHandler.postDelayed(mStartCircle,second); 
     } 
    } 
}; 

답변

2

대체 :

circles[i].setVisible(false); 

this.setVisible(false);