1

ご存知かもしれませんが、Cocos2D-iphone 1.xのCCFileUtilsのすべてのクラスメソッドは、Cocos2d2.xのシングルトン[CCFileUtilssharedFileUtils]のインスタンスメソッドとして書き直されました。

[CCFileUtils fullPathFromRelativePath:... resolutionType:...]

使用する必要があります

[[CCFileUtils sharedFileUtils] fullPathFromRelativePath:maskFileName resolutionType:&resolution]

スプライトをマスキングするための拡張機能(http://www.cocos2d-iphone.org/forum/topic/30494)を作成しました。これは、CCFileUtilsを多用するため、cocos2d1.xと2.xの両方と互換性を持たせる必要があります。

これらの呼び出しをオンザフライで変換するのに役立つCC_ENABLE_DEPRECATEDフラグについて知っていますが、明確な解決策が必要です。次のように使用するためのIDを返すクラスメソッドのようなもの:

Method:
+ (id) getCCFileUtils
{
id fileUtils = [CCFileUtils class];
if ([fileUtils instancesRespondToSelector:@selector(fullPathFromRelativePath:resolutionType:)])
{
    return [fileUtils sharedFileUtils];
}
else
{
    return fileUtils;
}
}
Usage:
id myFileUtils = [MyClass getCCFileUtils];

[myFileUtils fullPathFromRelativePath:maskFileName resolutionType:&resolution]

}

確かに、Cocos 1.xには「セレクター'sharedFileUtils'の既知のインスタンスメソッドがありません」というエラーが表示されます。これは、そのようなセレクターがないためです。動作させるにはどのように書き直す必要がありますか?

4

1 に答える 1

1

さて、私は少し寝た後に自分でそれをしました:)コードを共有してください:

/**In Cocos2d v 2.0 CCFileUtils class methods were moved to instance methods.
 Here we set SSK_FILE_UTILS to class or instance depending on Cocos2D version.
 */
#ifdef COCOS2D_VERSION
    #if COCOS2D_VERSION >= 0x00020000
        #define SSK_FILE_UTILS [CCFileUtils sharedFileUtils]
    #else 
        #define SSK_FILE_UTILS CCFileUtils
    #endif
#else
    #define SSK_FILE_UTILS nil
#endif

使用法:

[SSK_FILE_UTILS fullPathFromRelativePath:... resolutionType:...]
于 2012-05-11T20:26:35.090 に答える