0

xCode、より具体的には新しい SpriteKit を使用してプログラミングする方法を学び始めたところです。ですから、私はこれに慣れていないことを心に留めておいてください。

ラベルを押して別のシーンに移動することはできましたが、どういうわけかシーンの背景がおかしくなってしまいました。背景は最初のシーンのようにする必要がありますが、2 つの水平バーがある背景になりました。背景を 2 番目のシーンに設定するために必要なコードをコピーしただけなので、何も悪いことはしていないと思います。

最初のシーン: http://imageshack.us/photo/my-images/23/kyud.png/

2 番目のシーン: http://imageshack.us/photo/my-images/198/472h.png/

私のコードは両方の背景を設定するために使用されました:

SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"background_start"];
    background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    background.xScale = 0.7;
    background.yScale = 0.7;
    [self addChild:background];

移行は次の方法で行われます。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */

UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];

if([node.name isEqualToString:@"startgame"]){
    Options_Scene *gs = [[Options_Scene alloc] initWithSize:self.size];
    SKTransition *doors = [SKTransition doorsOpenVerticalWithDuration:0.5];
    [self.view presentScene:gs transition:doors];
}

}

PS: 背景のサイズが実際には 480x320 であるのに、なぜ 0.7 にスケーリングしなければならないのか不思議です。

4

1 に答える 1

0

あなたがランドスケープを使用しているので、私は交換します

viewWillAppear

- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];

SKView * skView = (SKView *)self.view;

if (!skView.scene) {
    //skView.showsFPS = YES;
    //skView.showsNodeCount = YES;
    // Create and configure the scene.
    SKScene * scene = [PMyScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    // Present the scene.
    [skView presentScene:scene];
}
}
于 2013-10-02T07:55:27.690 に答える