我想遍歷並刪除我的圖層(HUDLayer)的所有子節點。我試圖完成這個任務:在cocos2d中迭代一層兒童
for(id *item in HUDLayer.children_)
{
[self removeChild:item cleanup:YES];
}
但我得到一個錯誤 - >表達沒有一個有效的對象類型
有人可以闡明我的問題有些輕?
謝謝
我想遍歷並刪除我的圖層(HUDLayer)的所有子節點。我試圖完成這個任務:在cocos2d中迭代一層兒童
for(id *item in HUDLayer.children_)
{
[self removeChild:item cleanup:YES];
}
但我得到一個錯誤 - >表達沒有一個有效的對象類型
有人可以闡明我的問題有些輕?
謝謝
for(id *item
哎呦。 id
本身就是一個對象(也是一個指針),不需要星號。
for(id item in HUDLayer._children)
應該沒問題。
剛剛降落在此之後做了一些谷歌搜索的另一個問題。
您試圖從父母(HUDLayer)中刪除對象。其他人用「自我」回答了這個問題。然而...
你說......
for(id *item in HUDLayer.children_) {
[self removeChild:item cleanup:YES];
}
...但我以爲我會添加下面的代碼,我想這可能幫助別人試圖刪除的子節點沒有得到循環突變。
for(id item in HUDLayer.children) {
// If it's a sprite that you want to remove
if ([item isKindOfClass:[CCSprite class]]) {
// Use this to remove or else you'll have a loop mutation.
[item removeFromParentAndCleanup:YES];
}
}
無論如何,希望它有助於某人。
Lol - 現在編輯它,當我(認爲)迭代並從EVEN中移除時,父項可能會導致數組變異。所以,我正在修改上面的內容,首先將所有子元素放入數組中,然後通過IN REVERSE迭代並在此基礎上移除對象。這樣就避免了數組變異。見下:
NSArray *items = [[NSArray alloc] initWithArray: HUDLayer.children];
for (long i = items.count - 1; i >= 0; i--) {
id item = items[i];
if ([item isKindOfClass:[CCSprite class]] ||
[item removeFromParentAndCleanup:YES];
}
}
items = nil;
再次 - 希望它有助於某人。
我知道它必須是那樣簡單的東西。然而,現在它說的對象'HUDLayer'沒有財產children_ – Joey
@Joey不是我的錯 - 參考「HUDLayer」的文檔。 – 2012-11-26 20:37:13
children_是CCNode的一個屬性,並未在HUDLayer中聲明。有沒有理由不承認CCNode的這個屬性? – Joey