1

我有一个使用 cocos2D 进行小游戏的应用程序。当我按下一个按钮时,我会启动一个带有游戏的 cocos2D 场景。

我尝试在我的 cocos2D 场景中仅加载背景中的图像(bg.png)。我正在使用精灵。

它适用于 iPhone 5 和 iPhone 4S (iOS 6),但不适用于 iPhone 4。在 iPhone 4 上我有黑屏。我不明白为什么。

sprites-hd.png 是 3762 × 1252, 1,4 Mo。对于 iPhone 4 来说太大了吗?

在我的 GameViewController_iPhone.m 中:

-(IBAction) playGame {

    CCDirector *director = [CCDirector sharedDirector];

    CCGLView *glView = [CCGLView viewWithFrame:[[ISAMAppDelegate_iPhone sharedISAMAppDelegate].window bounds]
                                   pixelFormat:kEAGLColorFormatRGB565   // kEAGLColorFormatRGBA8
                                   depthFormat:0                        // GL_DEPTH_COMPONENT16_OES
                        ];

    // attach the openglView to the director
    [director setView:glView];

    if( ! [director enableRetinaDisplay:YES] )
        MyLog(@"Retina Display Not supported");

    [[CCDirector sharedDirector] setAnimationInterval:1.0/60];
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];    
    [self.view addSubview:glView];
    [[CCDirector sharedDirector] runWithScene:[Game sceneWithGameViewController:self]];
}

在我的 Game.m 中:

+ (CCScene *)sceneWithGameViewController:(GameViewController_iPhone*) gvc
{
    CCScene *game = [CCScene node];

    Game *layer = [[Game alloc] initWithGameViewController:gvc];
    [game addChild:layer];

    return game;
}


- (id) initWithGameViewController:(GameViewController_iPhone*) gvc {

    if(![super init]) return nil;

    if((self = [super init])) {

        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"sprites.plist"];

        CCSpriteBatchNode* batchNode = [CCSpriteBatchNode batchNodeWithFile:@"sprites.png" capacity:50];

        [self addChild:batchNode];

        CCSprite *someSprite = [CCSprite spriteWithSpriteFrameName:@"bg.png"];
        [batchNode addChild:someSprite];
    }
}
4

1 回答 1

3

您不能在 iPhone 4 中加载大于 2048x2048 的纹理,因此您可能会拆分当前的精灵图集。

于 2013-04-07T13:02:40.373 回答