私はcocos2d v2.0をインストールしました.v1に対して何が変わったのかを見るために少し作業しています.単純なcocos2d + box2dプロジェクトを作成しました.それを実行するとすべて正常に動作します.IntroLayerとHelloworld レイヤー、単純な背景レイヤーを表示しようとしたので、これを行いました:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface BackgroundLayer : CCLayer
@end
#import "BackgroundLayer.h"
@implementation BackgroundLayer
-(id)init {
self = [super init];
if (self != nil) {
CCSprite *backgroundImage = [CCSprite spriteWithFile:@"background.png"];
CGSize screenSize = [[CCDirector sharedDirector] winSize];
backgroundImage.position = ccp(screenSize.width/2, screenSize.height/2);
[self addChild:backgroundImage z:0 tag:0];
}
return self;
}
@end
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "BackgroundLayer.h"
@interface GameScene : CCScene
@end
#import "GameScene.h"
@implementation GameScene
-(id)init {
self = [super init];
if (self != nil) {
BackgroundLayer *backgroundLayer = [BackgroundLayer node];
[self addChild:backgroundLayer z:0];
}
return self;
}
@end
そして、アプリデリゲートでこれを変更しました:
[director_ pushScene: [IntroLayer scene]];
これで:
[director_ pushScene: [GameScene node]];
しかし、0.5 のスケーリングされているように見えます。網膜ではなく網膜のために、hd イメージと非 hd イメージを作成しました。何が間違っていますか? これは結果です:
http://img706.imageshack.us/img706/4778/schermata072456124alle1.png
編集: このように BackgroundLayer.m を変更すると、すべて正常に動作します:
@implementation BackgroundLayer
/*-(id)init {
self = [super init];
if (self != nil) {
CCSprite *backgroundImage = [CCSprite spriteWithFile:@"background.png"];
CGSize screenSize = [[CCDirector sharedDirector] winSize];
backgroundImage.position = ccp(screenSize.width/2, screenSize.height/2);
[self addChild:backgroundImage z:0 tag:0];
}
return self;
}*/
-(void) onEnter
{
[super onEnter];
CCSprite *backgroundImage = [CCSprite spriteWithFile:@"background.png"];
CGSize screenSize = [[CCDirector sharedDirector] winSize];
backgroundImage.position = ccp(screenSize.width/2, screenSize.height/2);
[self addChild:backgroundImage z:0 tag:0];
}
@end
誰かが私に理由を説明できますか? 古いバージョンのcocos2dでは、initメソッドでレイヤーを追加できることを覚えています...