0

GameScene、HomeScene、および RecordsScene という 3 つのクラスがあり、GameScene から RecordScene に整数値を渡そうとしています。私の問題は、ゲームが終了するとホームに戻り、レコードをクリックしてレコードを表示する必要があることです。基本的に、3 つのクラスの順序は次のようになります。

GameScene --> HomeScene --> RecordScene

私がやろうとしていたのは、整数値を GameScene から HomeScene に渡し、次に HomeScene から RecordScene に渡すことでしたが、そこに到達しても整数値はまだ 0 です。現在のコードは次のとおりです。 :

//GameScene
-(void)goHome:(ccTime)dt
{
HomeScene *home = [HomeScene node];
//myInt is an integer I declared on the HomeScene class, the value changes depending on the stage
home.layer.myInt = 1;
[[CCDirector sharedDirector]replaceScene:home];}

//HomeScene
-(void)viewRecord:(id)sender
{
//View record
RecordScene *record = [RecordScene node];
//lastStage is the integer from RecordScene I'm passing the value of myInt into
record.layer.lastStage = myInt;
[[CCDirector sharedDirector]replaceScene:record];}

私は次のようにクラスを実装しています:

@implementation HomeScene
@synthesize layer;

-(id)init
{
if((self =[super init]))
{
    self.layer = [HomeSceneLayer node];
    [self addChild:layer];
}
return self;
}
@end

@implementation HomeSceneLayer
@synthesize myInt;
//methods
@end

次に、ヘッダーは次のようになります。

@interface HomeScene : CCLayer
{
int myInt;}
@property(nonatomic)int myInt;
@end

@interface HomeScene : CCScene
{
HomeSceneLayer *layer;
}
@property (nonatomic, retain)HomeSceneLayer *layer;
@end

0 にリセットされるのはなぜですか? また、整数値を GameScene から RecordScene に渡すにはどうすればよいですか?

4

1 に答える 1

1

@synthesize myInt;iVar を作成します_myInt

RecordScene *record = [RecordScene node];
//lastStage is the integer from RecordScene I'm passing the value of myInt into
record.layer.lastStage = myInt;

record.layer.lastStagemyInt (HomeScene の iVar) に設定しています。試すrecord.layer.lastStage = self.layer.myInt;

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.htmlにある Apple のコーディング ガイドラインから

インスタンス変数の名前が、格納されている属性を簡潔に表していることを確認してください。通常、インスタンス変数に直接アクセスするべきではなく、代わりにアクセサ メソッドを使用する必要があります (init メソッドと dealloc メソッドでインスタンス変数に直接アクセスします)。これを知らせるために、インスタンス変数名の前にアンダースコア (_) を付けます。次に例を示します。

Xcode は現在 (いつからかはわかりません)、プロパティを自動的に合成し、iVar に@property [...] foo _foo.

于 2013-02-06T05:01:10.200 に答える