2012-02-23 53 views
1

我已經成功地創建了userData的結構,但是當我使用如何在UserData結構中包含/檢索/設置正文的位置?

ballBodyDef.userData = _ball; 

切換到

MyBodyData *bodyData = new MyBodyData(); 
bodyData->someNumber = 4; 
bodyData->sprite = _ball; 
_body->SetUserData(bodyData); 

以下失敗:

for(b2Body *b = world->GetBodyList(); b; b=b->GetNext()) {  
    { 
     if (b->GetUserData() != NULL) 
     { 
      CCSprite *myActor = (CCSprite*)b->GetUserData(); 
      myActor.position = CGPointMake(
              b->GetPosition().x * PTM_RATIO, 
              b->GetPosition().y * PTM_RATIO); 
      myActor.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()); 
     } 
    } 

我敢肯定,這與編譯器無法找到/設置myActor的位置這一事實有關,但我不知道如何使用struct包含/檢索/設置正文的位置...

回答

1
CCSprite *myActor = (CCSprite*)b->GetUserData(); 

您不能將MyBodyData*轉換爲CCSprite*。你必須寫:

if (b->GetUserData() != NULL) 
{ 
    MyBodyData *data = static_cast<MyBodyData*>(b->GetUserData()); 
    //then retrive any info you need from data 
} 
+0

是的!在我還沒有完全理解的情況下,我還沒有意識到static_cast,因此我能夠回答並處理它。最終結果爲: for(b2Body * b = world-> GetBodyList(); b; b = b-> GetNext()){ {if(b-> GetUserData()!= NULL) { MyBodyData * data = static_cast (b-> GetUserData()); int temp = data-> someNumber; CCSprite * myActor = data-> sprite; myActor.position = CGPointMake( b-> GetPosition()。x * PTM_RATIO, b-> GetPosition()。y * PTM_RATIO); myActor.rotation = -1 * CC_RADIANS_TO_DEGREES(b-> GetAngle());}}} – 2012-02-23 19:10:33

相關問題