2010-07-26 70 views

回答

10

CCCallFuncN將您稱爲該操作的CCNode傳遞給該方法。例如,如果你需要運行一個動作,可以消除它的父節點可以使用CCCallFuncN然後該方法是這樣的:

-(void)theCalledMethod:(CCNode *)thePassedNode 
{ 
    [thePassedNode.parent removeChild:thePassedNode]; 
} 

如果您使用的CCCallFunc相反,你必須保持一個參考所述節點以便能夠稍後檢索並在被調用的方法中移除它。

+1

這兩種方法之間的行爲差​​異非常重要。最近,我在回調中遇到了EXC_BAD_ACCESS,這讓我瘋狂;樂器找不到任何殭屍,而我所有的少數保留似乎都是正確的。原來我用CCCallFunc()而不是CCCallFuncN()調用了我的回調函數。由於CCCallFunc()不會將CCNode直接傳遞給您的回調,因此回調嘗試對發件人進行操作會導致應用程序崩潰。令人驚歎的是,'N'如何成爲崩潰應用和完美工作之間的區別。 – Blackcoat 2011-05-29 14:05:42

相關問題