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 に答える