Cocos2d CCScale - PullRequest
       4

Cocos2d CCScale

0 голосов
/ 19 января 2012

Я хочу создавать пульсирующие платформы и иметь некоторые проблемы с CCScale.У меня есть несколько объектов моего класса Platforms в NSMuttableArray.

@interface Platforms : CCNode{

    CCSprite *platformSprite;
    int typeP;

}
@property (nonatomic, retain) CCSprite *platformSprite;
@property int typeP;

@ реализация

- (id)init:(int)type
{
    self = [super init];
    if (self != nil) {
        typeP = type;
        platformSprite = [CCSprite spriteWithFile:@"ball.png" rect:CGRectMake(0, 0, 51, 52)];
        [self addChild:platformSprite];
    }
    return self;
}

Я добавил все объекты на экран

for (int i = 0 ; i < [_array count]; i++) {
        Platforms* _platforms2 = [[_array objectAtIndex:i ]retain];
        [self addChild:_platforms2];
        [_platforms2 release];
}

Итак ...Я хочу получить все объекты, где typeP == 1 Я получаю все эти объекты и добавить их в NSMuttableArray

for (int i = 0 ; i < [platformsArrayOnScreen count]; i++) {
        Platforms* temp = [platformsArrayOnScreen objectAtIndex:i];
        if (temp.typeP == 1) {
            [scaleArray addObject:temp];
}

Чем я хочу масштабировать все их до [CCScaleTo actionWithDuration:0.5 scale:0.2f];, а после этого масштабировать до [CCScaleTo actionWithDuration:0.5 scale:1.0f];

я создал функцию [self schedule:@selector(checkForScale:)];

-(void)checkForScale:(ccTime)dt {

    for (int i = 0; i < [scaleArray count]; i++) {
        Platforms* temp2 = [scaleArray objectAtIndex:i];
        if ([temp2.platformSprite scale] == 1.0f) {
            [self scaleDown:temp2];
        }
        if([temp2.platformSprite scale] == 0.2f){
            [self scaleUp:temp2];
        }
    }
}

-(void)scaleDown:(Platforms *)tempSprite {

    id scaleDown = [CCScaleTo actionWithDuration:0.3 scaleX:0.2f scaleY:0.2f];
    [tempSprite.platformSprite runAction:scaleDown];

}
-(void)scaleUp:(Platforms *)tempSprite {

    id scaleUp = [CCScaleTo actionWithDuration:0.3 scaleX:1.0f scaleY:1.0f];
    [tempSprite runAction:scaleUp];

}

Но это не работает ((мои платформы не пульсируют. Где моя проблема? Спасибо.

1 Ответ

1 голос
/ 20 января 2012

если вы хотите сделать это, вы можете CCSequence.

[tempSprite.platformSprite runAction:[CCSequence actions:[CCScaleTo actionWithDuration:3.0f scale:0.2f],[CCScaleTo actionWithDuration:3.0f scale:1.0f], nil]];

Не нужно делать все это:

-(void)checkForScale:(ccTime)dt 
-(void)scaleDown:(Platforms *)tempSprite 
-(void)scaleUp:(Platforms *)tempSprite 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...