CCLayer ‹CCRGBAProtocol› setOpacity:] нераспознанный селектор

Слой всплывающей сцены

@interface PopupScene : CCLayer <CCRGBAProtocol>

Сообщение об ошибке

22 февраля 11:06:31 unknown MyProject[443] : -[PopupScene setOpacity:]: нераспознанный селектор отправлен экземпляру 0xa68ca80 22 февраля 11:06:31 unknown MyProject[443] : * Завершение работы приложения к необработанному исключению 'NSInvalidArgumentException', причина: '-[PopupScene setOpacity:]: в экземпляр отправлен нераспознанный селектор

CCRGBAProtocol имеет метод setOpacity, но произошла ошибка...

Как я могу постепенно появляться и исчезать с CCLayer? (анимация непрозрачности, CCFadeIn и CCFadeOut)


person ChangUZ    schedule 22.02.2012    source источник
comment
Вы добавили определение для методов setOpacity/opacity в реализации PopupScene. Так как вам нужно будет реализовать протокол. Откуда вы вызываете метод setOpacity или его вызывают из системных библиотек?   -  person Ravin    schedule 22.02.2012
comment
@ChangUZ: только что добавил больше информации о вас, вы можете установить непрозрачность. Мой плохой, не знал об этом подклассе до сегодняшнего дня.   -  person YvesLeBorg    schedule 23.02.2012


Ответы (1)


CCLayer не реализует этот протокол (посмотрите в CCLayer.h). Если вам «действительно» нужно установить прозрачность слоя, вам придется сделать это вручную (как предлагает @Ravin). По сути, объявите и реализуйте метод setOpacity, и внутри этого метода сделайте то, что, по вашему мнению, необходимо сделать, чтобы установить непрозрачность слоя. Вы можете обнаружить, что получить результат, которого вы пытаетесь достичь, может быть сложно, если ваш слой включает в себя наложенные спрайты и другие объекты, которые не реализуют протокол.

Я только что обнаружил (ура), что если вы используете cocos2d версии 1.0.1, есть

CCLayerColor — это подкласс CCLayer, реализующий протокол CCRGBAProtocol.

Все функции CCLayer действительны, а также следующие новые функции:

непрозрачность

Цвета RGB

person YvesLeBorg    schedule 22.02.2012