我有一个有子 CCSprite 的 CCLayer 类(是的,它必须是 CCLayer,而不是 CCSprite)。我需要更改该图层的不透明度和比例,换句话说,我必须更改该图层所有子项的不透明度和比例。
我今天了解到我可以扩展 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;
}
处理尺度,使用相同的思路,但也看到消息multiple methods named 'scale' found
在简历中:如何扩展 CCLayer 类以使 CCLayer 的所有子级更改比例或更改不透明度?
谢谢