子 CCSprite を持つ CCLayer クラスがあります (はい、CCSprite ではなく 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 のすべての子のスケールまたは不透明度を変更するにはどうすればよいですか?
ありがとう