ios - swift SpriteKit : How to make an horizontal moving slider larger than screen

标签 ios swift sprite-kit

实际上,我正在为 iPad 创建一款益智游戏。我想创建一个包含所有拼图部分的移动 slider ,独立于游戏的其他元素。

我已经成功地在屏幕上创建拼图,周围有不同的拼图部件,用户可以用手指移动。要创建移动 slider ,我想使用我的主 .swift 文件中的指令。

addChild()

一个创建游戏的不同元素,站在屏幕上,另一个创建移动 slider 。我已经成功地做到了这一点, slider 上包含不同的拼图部件,但我无法使其水平移动,即使 slider 上有 touchMoved 功能也是如此。我创建了一个 4096 像素的大 slider ,我的场景大小固定为 2048 x 1536,并将 scene.scalemode 设置为 .AspectFill。我认为问题出在这里(也许)。

如果我创建一个更大的场景(如 4096 x 1536)并将 scene.scalemode 设置为 .Fill,我会在 iPad 上看到变形的图片。如何管理?

class GameViewController: UIViewController {
 override func viewWillLayoutSubviews() {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true

skView.ignoresSiblingOrder = true

let scene = GameScene(size: skView.frame.size)
scene.size.width = 4096
scene.size.height = 1536


/* Set the scale mode to scale to fit the window */
scene.scaleMode = .Fill


skView.presentScene(scene)
}

预先感谢您的帮助,

最佳答案

尽管标题和您的实际问题有所不同,但我认为您的问题是如何创建一个比呈现它的 UIView 更大的 SKScene。

SKScene 的大小是呈现 View (通常是 SKView 的实例)渲染它的点分辨率。这是在考虑 UIScreen 缩放之前的情况,因此全屏 iPad View 中 1024*768 的场景会以 2048*1536 渲染。仅当场景和包含的 SKView 实例的大小不同时,才会考虑 SKScene 的 scaleMode 属性。

在我看来,场景大小与 SKView 大小不同的场景很少见且异常(exception)。您可以分别将 SKView 和 SKScene 与 UIImageView 和 UIImage 进行比较。只有当宽高比不同时,scaleMode 才会影响 View 内 UIImage 的渲染/外观。

那么,如何创建比 View 更大的场景呢?这是一个技巧性问题,因为您不需要

将 SKScene 的大小视为场景的视口(viewport)。场景内的 SKNodes 不限于仅位于场景视口(viewport)内。对于大小为 1024*768 的 SKScene,创建一个 SKSpriteNode(例如,大小为 20*20)并将其放置在以下位置是完全合法的:

  • (0,0):您在左下角看到一个 10*10 点(或 20*20 像素)的正方形(四分之三隐藏在渲染之外)视口(viewport))
  • (500,500):完全可见
  • (1034,778):正好在右上角出界

关于ios - swift SpriteKit : How to make an horizontal moving slider larger than screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836507/

相关文章:

iphone - 使用 Core Text 为给定的字符串范围设置背景颜色/突出显示颜色

ios - 有没有办法在 Swift/iOS 中比较按钮图像

ios - 数据未从 JSON 加载到第二个 View Controller 上

ios - 使用 iOS 9 的启动图像未出现在主屏幕 Web 应用程序上

ios - 无法更改 iOS 11 中的导航栏项目高度

ios - Xcode (9.3) 中未命中断点

swift - SKLabelNode 边界和边界问题

ios - SpriteKit : Just wondering why my script won't work properly?

swift - 在 SpriteKit SWIFT 中获取 SKReferenceNode 的子节点

ios - UIImageView 在边框上拉伸(stretch)/重复图像并保持其质量