0

我有一个为我设置 CCAnimation 的方法

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]

在方法调用之后。

在 cocos2d 的 C# 版本中如何做到这一点?或者谁能​​帮我想出另一个解决方案?

提前致谢

4

1 回答 1

1

“通过添加保留来解决问题”听起来您(当时)不了解 ObjC 内存管理。

我将调查 ObjC 代码中的保留一开始就错误的可能性。由于 C# 中没有保留,并且对象显然是在 C# 中释放的,这意味着没有引用持有该对象,因此它将被垃圾收集。这表明 ObjC 版本中的保留解决了您释放对象的问题,但您可能存在内存泄漏。

如果您能弄清楚如何在 ObjC 中正确修复该问题,那么您还将知道如何在 C# 版本中修复它。

于 2012-03-17T11:47:18.107 回答