複数のレイヤーを追加する「シーン」クラスがあります。ゲームの最後に (さまざまなスコアを表示するために) レイヤーの 1 つから最後のレイヤーを追加したいと思います (したがって、このレイヤーはデリゲートを使用して Scene クラスを呼び出し、Scene クラスはこの新しいレイヤーを追加する必要があります。" LevelCompleteLayer")。
しかし、Scene クラスのメソッドは呼び出しを受けません。理由がわかりますか?他のデリゲート (レイヤー間) は正常に機能しますが、このデリゲート (レイヤーからシーンまで) は機能しません。
コードは次のとおりです。
//in Level1Scene.h :
@interface Level1Scene : CCScene <CompleteLayerDelegate>{
//in Level1Scene.mh :
@implementation Level1Scene
@synthesize levelComplete;
-(void)showLevelCompleteLayer {
CCLOG(@"delegateCompleteLayer showLevelCompleteLayer!!!");//does not show up
[self addChild:levelComplete z:5000];//is not added
}
-(id)init {
if ((self = [super init])) {
ScoreLayer *scoreLayer = [ScoreLayer node];
layer = [[Level1Layer alloc] initWithBackgroundImage:background.backgroundImage];
levelComplete = [[LevelComplete alloc] init];
layer.delegate = scoreLayer;//works fine
layer.delegateCompleteLayer = self; //does not respond
scoreLayer.delegate = layer;//works fine
//...
}
return self;
}
//in Level1Layer.m :
[delegateCompleteLayer showLevelCompleteLayer];
//in GameProtocols.h :
@protocol CompleteLayerDelegate
-(void)showLevelCompleteLayer;
@end
ご協力いただきありがとうございます