Cocos2d на iPhone: использование спрайтов, определенных в отдельных файлах классов - PullRequest
0 голосов
/ 13 марта 2010

Я пытаюсь нарисовать два спрайта на одном экране. Я определил два объекта спрайта в двух отдельных файлах классов.

  1. Если я закомментирую две строки (см. Комментарий к пункту 1 ниже), я получу отображение в виде [backgroundimage [background2.jpg] со спрайтом [grossini.png] на левой стороне.
  2. Если я раскомментирую две строки, я не получу фоновое изображение и спрайт (gameScreen.m). Я получаю только спрайт [grossinis_sister1.png], определенный в (врага.m).
  3. Но мне нужны [backgroundimage [background2.jpg]], спрайт [grossini.png] и спрайт [grossinis_sister1.png] на одном экране.

Это файл реализации моего первого класса:

#import "gameScreen.h"

#import "enemy.h"
@implementation gameScreen

-(id)init
{
    if((self = [super init]))
    {
        CCSprite *backGroundImage = [CCSprite spriteWithFile:@"background2.jpg"];
        backGroundImage.anchorPoint = ccp(0,0);
        CCParallaxNode *voidNode = [CCParallaxNode node];
        [voidNode addChild:backGroundImage z:-1 parallaxRatio:ccp(0.0f,0.0f) positionOffset:CGPointZero];   

        [self addChild:voidNode];

        CGSize windowSize = [[CCDirector sharedDirector] winSize];

        CCSprite *player = [CCSprite spriteWithFile:@"grossini.png"];
        player.position = ccp(player.contentSize.width/2, windowSize.height/2);

        [self addChild:player z:0];
        //eSprite = [[enemy alloc]init]; //<-- see item 1             
        //[self addChild:eSprite];      
    }

    return self;
}

Это мой файл реализации моего второго класса:

#import "enemy.h"

#import "gameScreen.h"
@implementation enemy
-(id)init
{
    if ((self = [super init]))
    {
        CGSize windowSize = [[CCDirector sharedDirector] winSize];

        CCSprite *enemySprite = [CCSprite spriteWithFile:@"grossinis_sister1.png" ];
        enemySprite.position = ccp(windowSize.width/2, windowSize.height/2);

        [self addChild:enemySprite];
    }
    return self;
}
@end

Ответы [ 2 ]

2 голосов
/ 15 марта 2010

Вам нужно понимание высокого уровня. Экран содержит 1 или несколько слоев, слой содержит спрайты.

Итак, создайте экран, а затем добавьте к нему слой и добавьте спрайты к созданному вами слою. Конечно, можно иметь много экранов, и экран может состоять из множества слоев. Но в простой демонстрационной игре создайте 1 экран, 1 слой и добавьте в него спрайты.

См. Эту ссылку для более подробной информации http://www.cocos2d -iphone.org / wiki / doku.php / prog_guide: basic_concepts .

0 голосов
/ 13 марта 2010

Я незнаком с Cocos2d, но нормальный шаблон - иметь объект, который будет владеть как игровым экраном, так и вражескими спрайтами и управлять обоими.

...