如何向我的 gameScene.swift 添加滚动视图,该视图将滚动浏览一系列精灵?

2024-01-03

所以我创建了一个 3x10 的精灵网格,它超出了屏幕的底部边缘。我添加了一个 UIScrollView,并且出现了滚动指示器,但实际上没有发生任何移动。 这是代码:

import SpriteKit
var buyButton = SKSpriteNode()
var pic = SKTexture(imageNamed: "Button")
class GameScene: SKScene, UIScrollViewDelegate {
    var scrollView = UIScrollView()
    var scrollFrame = CGRect!()
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        print(self.frame.size.width)
        scrollView = UIScrollView(frame: CGRect(origin: CGPointMake(0,0), size: CGSizeMake(self.frame.size.width, self.frame.size.height)))
        scrollView.contentSize = CGSizeMake(self.frame.size.width, self.frame.size.height*2)
        scrollView.bounces = false
        scrollView.pagingEnabled = true
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = true
        scrollView.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0)

        var width = self.frame.size.width
        var height = self.frame.size.height
        for i in 1...10{
            for x in 1...3{
                buyButton = SKSpriteNode(texture: pic, size: CGSizeMake(width*13/CGFloat(45), 100))//(rectOfSize: CGSizeMake(width*13/CGFloat(45), 100))
                buyButton.position = CGPointMake(CGFloat(29.0)*CGFloat(x)*width/CGFloat(90.0)-width*CGFloat(13)/CGFloat(90), CGFloat(i)*0.15*height-width*CGFloat(13)/CGFloat(45)*9.0/16.0)
                print("\(x)\(i)")
                buyButton.size = CGSizeMake(width*CGFloat(13)/CGFloat(45), width*CGFloat(13)/CGFloat(45)*9.0/16.0)
                buyButton.name = "\(x)\(i)"
                self.addChild(buyButton)
                var label = SKLabelNode(text: "hi")
                label.fontSize = 40
                label.name = "Label\(x)\(i)"
                buyButton.addChild(label)
                print(CGFloat(29.0)*CGFloat(x)*width/CGFloat(90.0)-width*CGFloat(13)/CGFloat(90))
                label.fontColor = UIColor.blackColor()
                label.horizontalAlignmentMode = .Center
                label.verticalAlignmentMode = .Center
            }
         }
        self.scene?.view?.addSubview(scrollView)
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */

    }

    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}

所以我不完全确定我做错了什么。

我意识到这不应该在 GameScene.swift 文件中,而应该是单独的,但这只是一个测试项目。

谢谢 :-)


你遇到了我困扰了一段时间的问题。根本问题是您无法将 SKNode 添加到 UIKit 视图,也无法将 UIKit 视图添加到 SKNode。视图不是节点,节点也不是视图,遗憾的是这是行不通的。虽然您可以将 UIKit 元素添加到 SKScene 的 view 属性中,但这只是您所能做到的。我在这个问题上挣扎了很长一段时间才最终得到它。

顺便说一句,我仍然混合 UIKit 和 SpriteKit,但我以有限的方式这样做,并且它从不依赖于向视图添加节点,反之亦然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向我的 gameScene.swift 添加滚动视图,该视图将滚动浏览一系列精灵? 的相关文章

随机推荐

  • 安卓Mipmap?

    每当我尝试使用 AndroidStudio 生成新的 Android 项目时 它都会隐藏文件夹 drawables 我以前从未发生过这种情况 我环顾四周 发现它正在生成这个名为 mipmap 的文件夹 我搜索了一下 发现这与绘图类似 但这是
  • 尝试使用 woocommerce_new_order_item 挂钩保存订单项元数据

    Add meta to order item param int item id param array values return void function cart add meta data booking item id valu
  • 使用 Wikimedia API 获取位置

    如何使用 Mediawiki API 获取 Wikipedia 文章的城市 国家位置 假设我想确定圣家族大教堂位于哪个国家 哪个城市 我应该使用什么属性 尝试以下查询 And see 扩展 地理数据 https www mediawiki
  • React Router v4 中的嵌套路由

    我正在尝试设置一些嵌套路由来添加通用布局 检查一下代码
  • 在应用程序购买测试帐户无法在 IOS 中运行?

    我们正在使用沙盒测试帐户测试应用程序购买 在测试时它显示验证 在验证付款信息后 当我尝试在应用程序购买中测试时 它会将我重定向到应用程序商店 应用程序商店显示超时 我做错了什么吗 我还创建了另外三个沙箱测试帐户 用于在应用程序购买中进行测试
  • Parallel.ForEach 未生成所有线程

    我在使用 Parallel ForEach 时遇到一些问题 我需要模拟几个硬件组件 等待传入连接并回复它 我当前的代码如下 Task Factory StartNew gt components component gt var liste
  • 第 N 次和第 (N+1) 次出现之间的正则表达式字符串

    我试图找到两个特殊字符之间第 n 次出现的子字符串 例如 一 二 三 四 五 比如说 我正在寻找 第 n 次和第 n 1 次 第二次和第三次出现 之间的字符串字符 结果是 三 我想使用正则表达式来做到这一点 有人可以指导我吗 我当前的尝试如
  • 从 SQL Server 2008 调用非托管 C/C++ DLL 函数

    我有一个庞大的 C C 函数库 需要从 SQL Server 2008 调用 我编写了一个 C 适配器类 它从 Win32 DLL 加载这些函数DllImport并将它们暴露给 Net 代码 这在大多数 Net 应用程序中都可以正常工作 现
  • 如何将参数名称作为参数传递?

    我有这个代码 hobbies2 form cleaned data pop hobbies2 PersonneHobby objects filter personne obj delete for pk str in hobbies2 t
  • UpdateSourceTrigger=显式

    我正在创建一个包含多个文本框的 WPF 窗口 当用户按下 确定 按钮时 我希望所有文本框都被评估为非空白 我知道我必须将 TextBox 与 Explicit 的 UpdateSourceTrigger 一起使用 但我是否需要为每个文本框调
  • 在资源有限的环境中禁用背景视频

    对于基于网络的媒体播放器项目 我正在尝试使用简单的一些微妙的背景视频
  • 使用 asp.net WebService 和 Android 将图像上传到 Azure Blob 存储?

    我正在尝试通过以下方式将选定的图像从我的 Android 设备上传到 Azure Blob 我制作的 asp net WebService 但我在 android 中收到橙色错误 W System err 454 SoapFault 故障代
  • Windows 客户端应用程序的登录对话框

    我可以调用 Win32 函数来显示 Windows 登录对话框吗 例如 Internet Explorer 和 Visual Studio 的团队资源管理器在访问网站时都会显示凭据对话框 我如何显示该对话框 我有一个 NET Windows
  • CLion 和 Crypto++ 库

    不久前 我开始在 Visual Studio 2015 中编写应用程序 在设置所有库依赖项时没有出现任何问题 现在 我决定搬到 CLion 但是我的应用程序依赖于cryptopp库 我需要将其链接到我的 CLion 项目中 目前 我面临着大
  • 如何仅获取表达式系列输出的最后一个值?

    我不需要这个表达式的整个数组 只需要它的最近 当前 值 如何修改其代码 UpperBollinger ta sma close 20 2 ta stdev close 20 当然 我可以用它来获得相同的较低频段 你不能这样做 Once a
  • std::bind 如何按值获取可变参数,即使具有通用引用?

    函数签名为std bind 如下 https en cppreference com w cpp utility functional bind template lt class F class Args gt unspecified b
  • 是否可以在 Google Maps API 中检索特定区域内的所有地址列表?

    假设我想检索罗马所有地址的列表 如何在 Google Maps API 或任何其他网络服务中以编程方式实现此目的 我不需要地址的实际位置 只需要地址名称的列表 您无法使用 Google Maps API 来做到这一点 你可以做反向地理编码
  • 用最少的计算量找到素数的算法

    假设您要编写一个函数 方法来查找素数 最有效的方法是什么 我认为这将是一个类似这样的测试 下面的代码是半c bool primeTest int x X is the number we re testing int testUpTo in
  • 获取 CGPath 上的随机 CGPoint

    我有一个代表椭圆的 CGPath 我想在该路径上的随机点放置一个精灵节点 如何获得该 CGPath 上的随机 CGPoint 谈到封闭式CGPath并思考一种快速方法来获得无限点之间的随机点CGPath 首先我已经翻译成Swift this
  • 如何向我的 gameScene.swift 添加滚动视图,该视图将滚动浏览一系列精灵?

    所以我创建了一个 3x10 的精灵网格 它超出了屏幕的底部边缘 我添加了一个 UIScrollView 并且出现了滚动指示器 但实际上没有发生任何移动 这是代码 import SpriteKit var buyButton SKSprite