2015-02-06 31 views
0
shell[0]=new TiledSprite (CAMERA_WIDTH*35/200,(CAMERA_HEIGHT*25)/40,shell_image, getVertexBufferObjectManager()) 
    { 
     int house_name=0; 
     int temp=house_name; 
     int current=0; 
     int num_houses=8; 
    @Override 
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent, 
      float pTouchAreaLocalX, float pTouchAreaLocalY) { 
     switch(pSceneTouchEvent.getAction()){ 
     case TouchEvent.ACTION_DOWN: 
      current=shell[0].getCurrentTileIndex();   
      temp=house_name; 
      TimerHandler timer = new TimerHandler(1, true, new ITimerCallback() { 
       int i=0; 
       int last=current; 
       @Override 
       public void onTimePassed(TimerHandler pTimerHandler) { 

        if((i<1)&&(temp==house_name)) 
         shell[house_name].setCurrentTileIndex(0); 

        if((i==last) && (shell[temp].getCurrentTileIndex()>0)&&(temp!=7)) 
       { 
         current=shell[temp].getCurrentTileIndex()+1; 
         shell[temp].setCurrentTileIndex(0); 
         last=current; 
         i=0; 
        } 
         if(i>0) 
         { 
          shell[temp].setCurrentTileIndex(shell[temp].getCurrentTileIndex()+1); 
         } 
         temp++; 
         if(temp>=num_houses){ 
          temp=0; 
         } 


        if(i == current) 
         unregisterUpdateHandler(pTimerHandler); 
        // unregister your timer 
        i++; 
       } 

       }); 

      shell[0].registerUpdateHandler(timer); 
           break; 
     } 
     return super 
       .onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); 
    } 
    }; 

如何取消註冊觸摸區域,使其在運行時不會再被觸摸? shell是一個數組。而且我還希望那些其他平鋪的精靈在運行時不要觸摸。請幫助我。這是菲律賓的一個叫做Sungka的mancala遊戲。如何註銷特定的onareatouch

回答

0

爲此,您需要從場景中取消註冊Sprite的觸摸區域。就像這樣:

scene.unregisterTouchArea(sprite); 
0

您也可以只存儲用於運行一個布爾變量(「布爾isRunning =真:」)你的精靈運行時,並在觸摸事件檢查這個變量。