1

我了解 iPhone 5s 的像素分辨率为 640 x 1136,点分辨率为 320 x 568(用于向后兼容非 Retina 设备)。

当我使用 SpriteKit 时,问题/困惑/奇怪似乎出现了。例子:

我正在从左下角(0, 0)到右上角(宽度,高度)画一条线。结果是这条线几乎画了一半。事实上,当我打印出屏幕尺寸时,它应该是 320 x 568。所以我决定从 (0, 0) 绘制到 (width * 2, height * 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

无论如何,这里是我如何得到好的结果:

只需打开一个新项目并尝试以下操作:

在您的 GameViewContrller 而不是使用viewDidLoad使用viewWillLayoutSubviews

编辑:这是Rob Mayoff 对viewDidLoadviewWillLayoutSubviews等方法的一个很好的解释

- (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 回答