0

HelloWorldLayer にコードがあり、デリゲートを使用して ScoreLayer のスコア番号を変更しています。UI を新しい画像で変更するために、ScoreLayer から HelloWorldLayer にメッセージを送り返したいと考えています。

各クラスにデリゲートを作成してもよろしいですか? そんな感じ :

hellolayer.delegate = scoreLayer;
scoreLayer.powerUpDelegate = hellolayer;

?

@class MyClass動作しません: プロトコルが認識されていません。
"#import "...": プロトコルの 1 つが認識されていませんが、classA が classB をインポートし、classA が再び classA をインポートするなどの問題があると思います。

どうすればいいですか?コードの一部を次に示します。

    //in HelloWorldLayer.h :

#import "ScoreLayer.h"

@protocol PowerUpDelegate
-(void)scalePowerUp;
@end


// HelloWorldLayer
@interface HelloWorldLayer : CCLayer <PowerUpDelegate>
{ … }

@property (nonatomic,retain) id <ScoreDelegate> delegate;




//in ScoreLayer.h :

//@class HelloWorldLayer; -->does not recognize the protocol
#import "HelloWorldLayer.h"

@protocol ScoreDelegate
//...
@end

@interface ScoreLayer : CCLayer <ScoreDelegate>{
    //...
}

@property (nonatomic,retain) id <PowerUpDelegate> powerUpDelegate;//-->cannot find protocol definition...

ありがとう

4

2 に答える 2

1

両方のプロトコルを実装する 3 番目のクラスを使用し、そのクラスを使用してデリゲート メソッドを処理することをお勧めします。

于 2012-06-24T22:21:39.177 に答える
1

はい; クラスを事前に宣言するように、プロトコルを事前に宣言できるため、これをScoreLayerクラスの先頭に置きます。

@protocol PowerUpDelegate;
于 2012-06-24T22:23:54.487 に答える