シーンにレイヤーを追加することは機能しません
-
12-11-2019 - |
質問
私は私のシーンにレイヤーを取得しようとしています。私のシーンは「生存」と呼ばれます。私のレイヤーは "SSPriteLayer"と呼ばれます。シーンは初期化されていますが、レイヤはそうではありません。
サバイバル.h:
.
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "SSpriteLayer.h"
@interface Survival : CCLayer {}
@end
サバイバル。
.
@implementation Survival
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
Survival *layer = [Survival node];
SSpriteLayer *spriteLayer = [SSpriteLayer node];
// add layer as a child to scene
[scene addChild: layer];
[scene addChild: spriteLayer];
// return the scene
return scene;
}
-(id) init
{
if( (self=[super init]))
NSLog(@"SCENE HAS INIT");
return self;
}
@end
.
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface SSpriteLayer : CCLayer {
}
@end
sspriteLayer.m:
.
#import "SSpriteLayer.h"
@implementation SSpriteLayer
-(id) init
{
if( (self=[super init]))
NSLog(@"SPRITELAYER HAS INIT");
return self;
}
@end
私が理解していないのは、私のレイヤーが開始されていない理由、そして私がデバッグ領域に "SpriteLayerがinit"を持っていないという理由があります。
解決
// add layer as a child to scene
[self addChild: layer];
[self addChild: SpriteLayer];
.
変更してを試してみてください
他のヒント
必ずあなたが呼び出すことを確認してください
[Survival scene];
.
NOT
[Survival node];
.
あなたのシーンを呼び出すとポストコード