1

iPhone 5s のピクセル解像度は 640 x 1136 で、ポイント解像度は 320 x 568 (非 Retina デバイスとの後方互換性のため) であることを理解しています。

SpriteKit を使用しているときに、問題/混乱/奇妙さが発生するようです。例:

左下隅 (0, 0) から右上隅 (幅、高さ) まで線を引いています。その結果、線は半分近く引かれました。実際、画面サイズを印刷すると、320 x 568 になるはずです。したがって、(0, 0) から (幅 * 2、高さ * 2) に描画することにしました。そしてもちろん、これは 640 x 1136 で印刷されました。

奇妙な点は次のとおりです。対角線であるべきものから角まで描いているのに、実際には角から角まで描かれていません。

ノート:

 - I'm getting the width & height values from self.value.frame.size.
 - The diagonal line seems to draw just fine using any of the iPad simulators.

ここで何が起こっているのですか? ここに画像の説明を入力

4

1 に答える 1

1

とにかく、ここに私が良い結果を得た方法があります:

新しいプロジェクトを開いて、これを試してください:

viewDidLoadを使用する代わりに GameViewContrrler でviewWillLayoutSubviewsを使用します。

編集: これは、viewDidLoadviewWillLayoutSubviewsなどのメソッドに関する Rob Mayoff による適切な説明です。

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;
    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = YES;

    // Create and configure the scene.

    if(!skView.scene){
        GameScene *scene = [GameScene sceneWithSize:skView.bounds.size];
        scene.scaleMode = SKSceneScaleModeAspectFill;

        // Present the scene.
        [skView presentScene:scene];
    }
}

したがって、シーン クラスの didMoveToView メソッドで、線を引くだけです。

    SKShapeNode *yourline = [SKShapeNode node];
    CGMutablePathRef pathToDraw = CGPathCreateMutable();
    CGPathMoveToPoint(pathToDraw, NULL, 0.0, 0.0);
    CGPathAddLineToPoint(pathToDraw, NULL, self.frame.size.width,self.frame.size.height);
    yourline.path = pathToDraw;
    [yourline setStrokeColor:[UIColor redColor]];
    [self addChild:yourline];
    CGPathRelease(pathToDraw);

init と didMoveToView についてはこちらをお読みください (LearnCocos2D が投稿したコメントをお読みください)。

これでほぼ終わりです。お役に立てば幸いです。

于 2015-06-08T16:49:56.070 に答える