2013-09-24 54 views
0

我想繪製體節點類型和polygonesprite。當我要更新這兩種類型的更新方法。我有問題。更新不同類型節點

這是polygone類型:

BombBallSprite *bomb = BombBallSprite::spriteWithWorld(world); 
bomb->getBody()->SetType(b2_staticBody); 
bomb->activateCollisions(); 

this->addChild(bomb); 

這是身體節點類型:

this->addBodyNode(node, 0); 
node->release(); 

此上述兩種類型在單個場景繪圖。

當我在兩個更新,我有問題:

void HelloWorld::update(float dt) 
{ 
    if(gameState_ != kGameStatePaused) 
    { 
     world_->Step(dt, velocityIterations, positionIterations); 
    } 

    this->checkAndSliceObjects(); 

} 


void HelloWorld::checkAndSliceObjects() 
{ 
double curTime = getTimeTick(); 

for (b2Body* b = world_->GetBodyList(); b; b = b->GetNext()) 
{ 
    if (b->GetUserData() != NULL) 
    { 

     PolygonSprite *sprite = (PolygonSprite*)b->GetUserData(); 
     BodyNode *node = (BodyNode*) b->GetUserData(); 
     if(node && (node->properties_ & BN_PROPERTY_SPRITE_UPDATED_BY_PHYSICS)) { 

      ------- 

     } 

     if (sprite->getSliceEntered() && curTime > sprite->getSliceEntryTime()) 
     { 
      sprite->setSliceEntered(false); 
     } 
     else if (sprite->getSliceEntered() && sprite->getSliceExited()) 
     { 
      this->splitPolygonSprite(sprite); 
     }      
    } 

} 

}

我無能如何處理的更新方法

PolygonSprite *sprite = (PolygonSprite*)b->GetUserData(); 
    BodyNode *node = (BodyNode*) b->GetUserData(); 

任何一個可以幫助我在以下?

+0

請解釋一下這些 「問題」 是 – LearnCocos2D

+0

它轉到線程 「b2Fixture :: GetBody()」( 「線程1:EXEC_BAD_ACCESS(代碼= 1,地址= 0xc008476f)」 – Vanarajan

+0

然後其他時間:它顯示線程1 :「polygoneSprite的0類型信息名稱」 – Vanarajan

回答

1

我有一個捷徑方法。

您必須爲所有人設置標籤。例如。 polygone sprite爲100,sprite爲200.

可以使用用戶數據檢查標籤。如果標籤是100,你會做polygone精靈更新。如果標籤是200,你會做精靈更新。

我認爲它會幫助你。

相關問題