2012-03-17 4 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] 

сразу после вызова метода ,

Как вы это делаете в версии COS cocos2d? Или может кто-нибудь помочь мне придумать другое решение?

Заранее спасибо

ответ

1

«обходящий проблему, добавив сохранить» звучит, как вы не понимаете ObjC управления памятью (в то время).

Я бы исследовал возможность того, что сохранение в коде ObjC не так для начала. Поскольку в C# нет сохранения, и объект, по-видимому, выпущен на C#, это означает, что ссылки на объект отсутствуют, поэтому будет собран мусор. Это указывает на то, что сохранение в версии ObjC устраняет проблему выпуска объекта, но у вас может быть утечка памяти.

Если вы можете выяснить, как правильно исправить проблему в ObjC, вы также узнаете, что делать, чтобы исправить ее в версии C#.

+0

Спасибо за помощь. Я попытался воспроизвести анимацию из основного игрового класса, и он отлично работает, кажется, единственная проблема - когда я пытаюсь запустить анимацию из AnimalClass (передаю ее классу с помощью метода). Он наследует CCNode и имеет спрайты для запуска анимации, поэтому зачем сборщик мусора очищать его от меня? – user819640

Смежные вопросы