Как нам перечислить и изменить массив позиций CCsprite внутри метода Update?

Как нам перечислить и изменить позицию нашего объекта (содержащегося в массиве) для каждой разницы во времени?

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

Как мне обойти это?

  @implementation GameScene

{
    Hunter *_hunter;
    Bird *_bird;

    NSMutableArray *_arrayOfBirds;

   }

-(void)update:(CCTime)delta{

    CGSize viewSize = [CCDirector sharedDirector].viewSize;

    float birdSpeed = 50;

    for (Bird *birds in _arrayOfBirds) {
        if (birds.position.x < 0) {
            birds.flipX = YES;
        }
        if (birds.position.x > viewSize.width) {
            birds.flipX = NO;
        }
        float distanceToMove = birdSpeed * delta;
        float direction = birds.flipX ? 1 : -1;
        float newX = birds.position.x + direction * distanceToMove;
        float newY = birds.position.y;
        birds.position = ccp(newX, newY);
    }
}

-(void)addBird{
    CGSize viewSize = [CCDirector sharedDirector].viewSize;

    for (int i=0; i < 4; i++) {

        _bird = [[Bird alloc]initWithBirdType:(i)];
        _bird.position = ccp(viewSize.width * 0.5f + 30 * i , viewSize.height * 0.9f - 15* i);
        [self addChild:_bird];
        [_arrayOfBirds addObject:_bird];
    }
}

person user3213703    schedule 17.06.2015    source источник
comment
как проявляется «я потерпел неудачу»? Будьте конкретны в отношении ошибки или поведения, которое вы наблюдаете.   -  person YvesLeBorg    schedule 17.06.2015
comment
@YvesLeBorg, когда я запускаю сцену, птицы, содержащиеся в массиве, не двигаются, они должны двигаться, когда перечисление в методе обновления запускается каждую секунду. есть ли обходной путь для этого случая?   -  person user3213703    schedule 18.06.2015
comment
покажите, как вы объявили _arrayOfBirds. Если он равен нулю, вы получите то, что описываете.   -  person YvesLeBorg    schedule 18.06.2015
comment
@YvesLeBorg, ты прав, это ноль. но почему это ноль? я что-то пропустил? Я объявил его как частный экземпляр (NSMutableArray) (скобки ниже реализации в Gamescene.m), для деталей я обновил код выше.   -  person user3213703    schedule 18.06.2015
comment
@YvesLeBorg спасибо за указание, я забыл создать экземпляр _arrayOfBirds.   -  person user3213703    schedule 18.06.2015


Ответы (1)


Вы забыли инициализировать свой массив

здесь (при условии ARC)

-(id) init {
      if(self=[super init]) {
          _arrayOfBirds = [[NSMutableArray alloc] init]; 
          // the rest
      }
      return self;
}
person YvesLeBorg    schedule 18.06.2015