2013-11-07 3 views
0

В моей игре cocos2d у меня есть «powerup», где, когда достигнутый, персонаж становится синим, платформа становится синей, а также фоном. Я не уверен, если я реализую это наилучшим образом, так что если у вас есть другие предложения, пожалуйста, сделать акцию! :)Доступ к переменной экземпляра из другого класса для проекта cocos2d?

Я создал класс Синий, который имеет переменную экземпляра с именем blueCalled

Я импортировал этот класс как для моего класса «Платформа», так и для моего класса «Player».

Кодирующий код включения питания и игрока находится внутри класса платформы. Это код, когда PowerUp ударил:

// try remove powerup 
- (void) tryRemovePowerup 
{ 
    NSMutableArray * currentPowerUpArray = [self getcurrentPowersArr]; 

    if(currentPowerUpArray) 
    { 
     int playerY = ((CCLayer*)(self.player)).position.y; 
     for(int x=0; x<[currentPowerUpArray count];x++) 
     { 
      CCSprite *powerup = [currentPowerUpArray objectAtIndex:x]; 

      if(abs(powerup.position.x+powerup.parent.position.x-[Player initX])<50) 
      { 
       if(abs(powerup.position.y+blueberry.parent.position.y-playerY)<30 && powerup.visible && powerup.visible) 
       { 
        [power.parent powerup cleanup:YES]; 

        CGSize winSize = [[CCDirector sharedDirector] winSize]; 
        [[SimpleAudioEngine sharedEngine] playEffect:@"yay.wav" pitch:1 pan:0 gain:1]; 
        // THIS IS WHERE ALL OF EFFECTS SHOULD HAPPEN 
        NSLog(@"powerup hit"); 

       } 
      } 
     } 
    } 


    [self hitTestOB]; 
} 

Место // ЭТО ГДЕ ВСЕ ДЕЙСТВИЯ ДОЛЖНЫ БЫВАЕТ, где я хочу, чтобы сделать все синим. Прямо сейчас, я планирую сделать это, установив для переменной экземпляра в классе Blue значение YES.

В методах, которые занимаются 1. кадрами основного игрока, 2. фона и 3. фреймов платформы, у меня есть инструкция if, проверяющая, является ли переменная экземпляра класса Blue ДА или НЕТ, и это действует соответственно. Однако я не знаю, как использовать переменную экземпляра из класса Blue в моей платформе и классе игрока, также я не уверен на 100%, это лучший способ реализовать powerup.

Спасибо за любую помощь вы можете предоставить мне :)

Go IOS!

+0

это может оказаться полезным: http://www.learn-cocos2d.com/files/cocos2d-essential-reference-sample/Strategies_for_Accessing_Other_Nodes.html – LearnCocos2D

ответ

0

Как правило, если вы хотите получить доступ к iVar другого объекта, вы должны сделать свойство для доступа к нему. Это не исключение из этого правила, но я расскажу вам, как это сделать в любом случае.

Объекты Objective C по существу являются структурами C. Это означает, что на них работает оператор ->. В этом случае вы хотели бы использовать blue->blueCalled, где blue - это экземпляр вашего класса Blue.

Видимость является ключом к этой работе (или сбою). Вы можете использовать это только в том случае, если iVar объявлен в пределах @interface в файле заголовка и не указан ниже и @private или @protected.

 Смежные вопросы

  • Нет связанных вопросов^_^