2012-04-25 9 views
2

私はスプライトとしてシーン上に10枚のピクチャを持っています。そして、それらは配列内にあります。ピクチャ(スプライト)はMoveModifierによってシーン上を移動しています。 私はこれが欲しいです:どの写真に触れても、私が触った写真は見えないはずです。 私のコードは19.のために動作しません。line(circleles [i] .setVisible(false);) eclipseは私にfinal(変数)をしていると言います。私は配列のインデックスを変更する必要があるので、 。私に何ができる?Andengineスプライトが配列していて、どれが1つに触れていますか?

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); 
関連する問題