0
我有這樣的設置:cocos2d刪除精靈與行動
一個圖層有一個精靈作爲孩子。精靈有這個代碼在其init方法:
id fadeOut = [CCFadeOut actionWithDuration:1.0f];
id death = [CCCallFunc actionWithTarget:self selector:@selector(die)];
self.deathAction = [CCSequence actions:fadeOut, death, nil];
[self runAction:deathAction_];
死亡的行動呼籲在其狀態更改爲「死」精靈的「模具」的方法。
在其更新的方法層檢查所有兒童和刪除那些至極是「死」有:
[self removeChild:child cleanup:YES];
的問題是,孩子精靈仍然有2 retaincount此行之後。據我瞭解,它由CCCallFunc保存。如果我省略了這個deathAction,而是移除了零不透明(當它們變淡時)的小精靈,代碼正在工作,dealloc方法被調用。
我應該如何通過正確使用動作來刪除精靈?
你說得對。我修改了代碼,以便刪除由精靈內部處理。我通過動作調用死亡方法,並在其中調用'[self removeFromParentAndCleanup:YES];'問題是在這個調用之前我必須調用'[deathAction_ release];'。爲什麼?我在精靈的dealloc方法中有釋放調用?如果我想以某種方式刪除精靈,除了通過操作? – bolshas
如果您發佈的對象不知道您確切保留了哪個保留,則只會隱藏一個症狀,而不能解決問題。 – bbum