У меня есть класс CCLayer (да, это должен быть CCLayer, а не CCSprite), у которого есть дочерние CCSprites. Мне нужно изменить непрозрачность и масштаб этого слоя, что, другими словами, мне нужно изменить непрозрачность и масштаб всех детей этого слоя.Cocos2d 2.0 - изменение масштаба CCLayer
Я узнал сегодня, что я могу расширить класс CClayer, используя это, чтобы иметь дело с непрозрачностью детей ...
#import "CCLayer+Opaque.h"
@implementation CCLayer (CCLayer_Opaque)
// Set the opacity of all of our children that support it
-(void) setOpacity: (GLubyte) opacity
{
for(CCNode *node in [self children])
{
if([node conformsToProtocol:@protocol(CCRGBAProtocol)])
{
[(id<CCRGBAProtocol>) node setOpacity: opacity];
}
}
}
- (GLubyte)opacity {
for (CCNode *node in [self children]) {
if ([node conformsToProtocol:@protocol(CCRGBAProtocol)]) {
return [(id<CCRGBAProtocol>)node opacity];
}
}
return 255;
}
@end
Я сделал это и импортировать файл в моем главном классе, но я до сих пор эта ошибка возникает при попытке установить непрозрачность этого CCLayer: несколько методов с именем «непрозрачности» найдено
Я также пошел дальше и добавил это расширение класса:
-(void) setScale: (CGFloat) scale
{
for(CCNode *node in [self children])
{
[node setScale: scale];
}
}
-(CGFloat) scale
{
for(CCNode *node in [self children])
{
return [node scale];
}
return 1.0f;
}
Чтобы справиться с масштабом, используя ту же самую идею, но и увидеть сообщение несколько методов с именем «шкало» найдены
В резюме: как я расширить класс CCLayer, чтобы сделать все ребенок изменения CCLayer масштаб или изменение непрозрачности?
спасибо
Являются ли ваши реализации шкалы непрозрачности просто возвращением прозрачности/масштаба первого ребенка? Это намеренно? – jonmorgan
Да, потому что, поскольку я изменяю все непрозрачности всех детей на одно и то же значение, мне просто нужно вернуть его, чтобы узнать, насколько непрозрачность. – SpaceDog