iPhone Cocos2D - запуск сцены с определенным изображением - PullRequest
1 голос
/ 11 ноября 2011

Я хотел бы начать новую сцену на cocos2d, но я хочу передать изображение, которое будет использоваться в качестве самого фона сцены.

Если бы это было с UIImageViews, это было бы эквивалентно

UIImageView *myIV = [[UIImageView alloc] initWithimage: myImage];

то есть myImage - это изображение, которое заполнит весь myIV.

Говоря в терминах cocos2d,

Я бы назвал сцену, используя что-то вроде этого,

[[CCDirector sharedDirector] replaceScene:
     [CCTransitionFade transitionWithDuration:0.5f scene:[myScene scene]]];

но если сцена войдет в экран, как я могу указать изображение, чтобы оно создавалось на основе изображения (используя изображение в качестве bg и в размере изображения).

Я думал о создании свойства в myScene для передачи изображения, но это будет бесполезно, так как init будет запущен до того, как свойство может быть установлено, и, насколько я понимаю, метод init должен запускаться с использованием изображения как ссылка.

Ответы [ 2 ]

3 голосов
/ 12 ноября 2011

Расширьте свой класс "myScene" инициализатором, который принимает UIImage в качестве аргумента:

-(id) initWithUIImage:(UIImage*)image
{
    if ((self = [super init]))
    {
        CCTexture2D* tex = [[[CCTexture2D alloc] initWithImage:image] autorelease];
        CCSprite* bg = [CCSprite spriteWithTexture:tex];
        [self addChild:bg];
        // ...
    }
    return self;
}

+(id) sceneWithUIImage:(UIImage*)image
{
    return [[[self alloc] initWithUIImage:image] autorelease];
}

Затем вы можете создать эту сцену (предполагается, что ваш класс "myScene" называется "MySceneClass":

MySceneClass* myScene = [MySceneClass sceneWithUIImage:image];
id trans = [CCTransitionFade transitionWithDuration:0.5f scene:myScene];
[[CCDirector sharedDirector] replaceScene:trans];
1 голос
/ 11 ноября 2011

Вы всегда можете поместить некоторые методы в ваш appDelegate, чтобы установить свойство, а затем получить значение из вашего init?

-(void) setImageToUse:(NSString *)theImageString {
imageToUSe = theImageString;
}

-(int) returnImageToUse {
return imageToUSe;
}

или просто сохранить строку в nsuserdefaults и снова получить ее в методе init

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...