Присвоение свойству с атрибутом «Только чтение» не разрешено - PullRequest
1 голос
/ 15 декабря 2011

Я скачал это приложение tweejump на Github .Он отлично работал с xcode 3.2.3, но теперь, когда я обновился до xcode 4.2, он показывает ошибку в этой строке:

cloud.opacity = 128;

Контекст:

- (void)initCloud {

    CGRect rect;
    switch(random()%3) {
        case 0: rect = CGRectMake(336,16,256,108); break;
        case 1: rect = CGRectMake(336,128,257,110); break;
        case 2: rect = CGRectMake(336,240,252,119); break;
    }   

    AtlasSpriteManager *spriteManager = (AtlasSpriteManager*)[self getChildByTag:kSpriteManager];
    AtlasSprite *cloud = [AtlasSprite spriteWithRect:rect spriteManager:spriteManager];
    [spriteManager addChild:cloud z:3 tag:currentCloudTag];

    cloud.opacity = 128;
}

Он говорит assigning to property with readonly attribute not allowed.

В чем проблема?Повлияет ли это на мое обновление до xcode 4.2?

Я не знаю, что делать, потому что, как я уже сказал, я только что загрузил его ...

1 Ответ

2 голосов
/ 15 декабря 2011

Глядя на источник cocos2d, который включен в репозиторий Git, на который вы указали, свойство определяется как:

@property (readonly) GLubyte opacity, r, g, b;.

Так что да, это только для чтения. Однако протокол CocosNodeRGBA определяет и метод получения, и установку для свойства непрозрачности. Таким образом, кажется, что 2 разных компилятора выбирают разные вещи, где один замечает, что на самом деле можно установить прозрачность, а другой соблюдает это свойство.

Я думаю, что достаточно безопасно изменить настройку непрозрачности на:

[cloud setOpacity:128];

Для получения дополнительной информации см. Здесь: http://www.cocos2d -iphone.org / forum / topic / 25332

...