2012-03-17 89 views
0

我有建立CCAnimation對我的一種方法的Cocos2D保留在C#中的對象

public CCAnimation SetupAnimations(string prefixOFSprite, int numberOfFrames, int startFrame) 
    { 
     //me getting desperate and doing any old initilisation 
     CCAnimation finalAnimation = new CCAnimation(); 
     finalAnimation = CCAnimation.animation(); 

     for (int i = startFrame; i < numberOfFrames + 1; i++) 
     { 
      finalAnimation.addFrameWithFileName(prefixOFSprite + "-" + i); 
     } 

     float delay = 0.07f; 
     finalAnimation.setDelay(delay); 

     return finalAnimation; 

我稱之爲這樣

whiteDogBeginFalling = SetupAnimations("GameGraphics/dog/falling/white-falling", 7, 1) 

但是當我運行遊戲的動畫不玩了:(這是我從iOS移植我的遊戲,並且我通過添加了

[whiteDogBeginFalling retain] 

直接調用方法。

你如何在C#版本的cocos2d中做到這一點?或者任何人都可以幫助我想出另一種解決方案?

在此先感謝

回答

1

「讓周圍的一個問題通過增加保有」聽起來像是你不明白ObjC內存管理(當時)。

我會調查在ObjC代碼中保留的可能性是錯誤的開始。由於C#中沒有保留,並且該對象顯然是在C#中釋放的,這意味着沒有對該對象的引用,因此它將被垃圾收集。這表明ObjC版本中的保留解決了釋放對象的問題,但是您可能會在那裏發生內存泄漏。

如果你能弄清楚如何在ObjC中正確地解決這個問題,你也會知道如何解決它在C#版本中。

+0

感謝您的幫助。我曾嘗試從主遊戲類中播放動畫,並且效果很好,似乎是唯一的問題是當我嘗試從AnimalClass運行動畫時(我通過方法將其傳遞給類)。它繼承了CCNode並且有精靈來運行動畫,那麼垃圾收集爲什麼會在我身上清除它? – user819640 2012-03-17 12:55:49