Iphone cocos2d v2缩放我的背景
我已经安装了cocos2dv2.0,我正在对它做一些工作,看看它对v1有什么改变,我创建了一个简单的cocos2d+box2d项目,我运行它,一切正常,我删除了IntroLayer和Helloworld层,我试图显示一个简单的背景层,所以我做了以下工作:Iphone cocos2d v2缩放我的背景,iphone,ios,cocos2d-iphone,Iphone,Ios,Cocos2d Iphone,我已经安装了cocos2dv2.0,我正在对它做一些工作,看看它对v1有什么改变,我创建了一个简单的cocos2d+box2d项目,我运行它,一切正常,我删除了IntroLayer和Helloworld层,我试图显示一个简单的背景层,所以我做了以下工作: #import <Foundation/Foundation.h> #import "cocos2d.h" @interface BackgroundLayer : CCLayer @end #import "Backgrou
#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: [GameScene node]];
但是0.5的比例,我创建了高清和非高清图像,用于视网膜而非视网膜,我错了什么?结果是:
编辑:
如果我以这种方式更改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方法中添加层…使用这种风格,在cocos2d 2.0中也可以使用
@interface GameScene : CCLayer
{
}
+(CCScene *) scene;
@end
#import "GameScene.h"
@implementation GameScene
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
GameScene *gameScenelayer = [GameScene node];
// add layer as a child to scene
[scene addChild: gameScenelayer];
// return the scene
return scene;
}
-(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
//叫这个
[director_ pushScene: [GameScene scene]];
嗯,你有没有检查过-hd文件的宽度和高度是SD文件的两倍?或者图像的右下角只是有一个透明区域。图像是完美的,那么为什么我在编辑中写的最重要的工作?…如果图像是错误的,我在编辑中写的第二种方法也不应该工作。。。
[director_ pushScene: [GameScene scene]];