2017-03-14 67 views
0

我试图创建一个'模态'SKSpriteNode,填充大部分屏幕减去每边的边界。我有一个SKSpriteNode的子类,因为我需要传递一些其他信息用于显示目的,所以我有一个自定义的init方法。SKSpriteNode相对于屏幕的大小

之后,我初始化我的模态,然后我设置的大小如下:

let modal = Modal(items: [Item]) 
    let newSize = CGSize(width: (frame.width) - 40, height: (frame.height) - 40) 

    modal.size = newSize 
    modal.zPosition = 999 
    addChild(modal) 

麻烦的是没有在我的模态的顶部或底部没有边界,它垂直填满整个屏幕。我自定义的模式调用'init'方法调用super.init传递的大小为50,50,所以即使它是那么小,那么屏幕如果这是它使用的,但它不是。我的游戏处于横向模式,我尝试切换上面的宽度和高度,但是它填满整个屏幕(所以左右两侧都没有边框)。我知道我没有在上面的代码中设置位置,但即使如此,如果它不统一,我也希望在某个晚上的某个地方看到“边框”。

这一切都在我的主场景文件中完成,因此这里的框架与主游戏场景的框架相关。

任何想法?

+0

只需打印所有值,即可看到问题所在。例如。打印场景的大小,视图的大小,模式的大小等...或者添加可以复制问题的代码... – Whirlwind

+0

我提供了代码来复制问题。我没有触及我的场景的大小,这是本例中的视图,因为它是一个SKScene文件。然而,它使问题变成了我的sks文件。这最初设置为自由形式。通过以横向方向更新此特定设备已解决问题 – TommyBs

回答

0

因此,对于其他人也有类似的问题,问题是我的场景从SKS文件加载。

有问题的SKS文件将其大小设置为自由形式。将其更改为特定设备(例如iPhone 6)并确保其方向设置为横向已修复了尺寸问题