2012-06-27 60 views
1

我想使用更新處理程序來增加精靈的比例。但是,它不允許調用場景動作提升事件,所以精靈的大小繼續增加。如何在動作結束時讓更新處理程序中斷?這是我有:當動作啓動時(AndEngine),我如何獲取場景更新處理程序?

的更新處理:

scene.registerUpdateHandler(new IUpdateHandler() { 

     @Override 
     public void reset() {   
     } 

     @Override 
     public void onUpdate(float pSecondsElapsed) { 
      if(fillerNum>-1){ 
       if(filler[fillerNum].active){ 

        mPhysicsWorld.unregisterPhysicsConnector(mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(filler[fillerNum].sprite)); 
        mPhysicsWorld.destroyBody(filler[fillerNum].body); 

        filler[fillerNum].sprite.setScale(filler[fillerNum].scale+=pSecondsElapsed*3); 

        filler[fillerNum].body = PhysicsFactory.createCircleBody(mPhysicsWorld, filler[fillerNum].sprite, BodyType.DynamicBody, FIXTURE_DEF); 
        mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(filler[fillerNum].sprite, filler[fillerNum].body, true, true)); 
       } 
      }    
     } 
    }); 

場面觸摸事件:

@Override 
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 
    if(this.mPhysicsWorld != null) { 
      if(pSceneTouchEvent.isActionDown()) { 
       createFiller(pSceneTouchEvent.getX(), pSceneTouchEvent.getY()); 
       return true; 
      } 
      if(pSceneTouchEvent.isActionUp()){ 
       Log.e("Action UP", Boolean.toString(filler[fillerNum].active)); 
       createStationaryFiller(); 
      } 
     } 
    return false; 
} 

回答

1

只需保存UpdateHandler實例:

handler = new IUpdateHandler() {... etc 

和當你想停止它,請致電scene.unregisterUpdateHandler(handler)

+0

我想過這個,但我的isactionup從來沒有註冊(日誌語句從不執行),這是我想要調用scene.unregisterUpdateHandler(處理程序),對吧? – rphello101

+0

TouchEvent在您擡起手指時甚至會觸發嗎?把一些日誌輸出放在if語句之前,然後看看。也許嘗試檢查pSceneTouchEvent.getAction()== MotionEvent.ACTION_UP。我認爲這不會有幫助,但值得一試。 – JohnEye

+0

另外,記錄pSceneTouchEvent.getAction()的值並告訴我你得到了什麼。 – JohnEye

相關問題