缓慢的 Skscene 过渡

2023-12-02

我有两个场景:家庭和玩耍。与到家庭场景的转换相比,到游戏场景的转换确实很慢。我想这是因为我的游戏场景中有更多的事情发生。有什么方法可以预加载播放场景吗?或者让过渡更加无缝?

我对这个论坛的答案感兴趣预加载场景以防止延迟?但我不知道从哪里开始。我把答案的 A 部分和 B 部分放在哪里

这是我正在使用的

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    let touch = touches
    let location = touch.first!.locationInNode(self)
    let node = self.nodeAtPoint(location)

    if (node.name == "Balloon") {

        let sceneAction = SKAction.runBlock({
            let secondScene = Scene2(size: self.size)
            let transition = SKTransition.fadeWithDuration(1)
            secondScene.scaleMode = SKSceneScaleMode.AspectFill
            self.scene!.view?.presentScene(secondScene, transition: transition)
        })
            PlayButton.runAction(SKAction.sequence([sound,SKAction.animateWithTextures(array, timePerFrame: 0.1),sceneAction,SKAction.waitForDuration(1)]))


    }    

任何其他解决方案都可以。

Thanks


我这样做并有效: 在didView of 主页场景 put preloadGameScene()并且始终在家庭场景中:

fileprivate var nextScene: SKScene?

func preloadGameScene () {
    let qualityOfServiceClass = QOS_CLASS_BACKGROUND
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
    dispatch_async(backgroundQueue, {
        self.nextScene = GameScene(fileNamed:"yoursksfilename")
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            print("SCENE LOADED")
            let loading = self.childNodeWithName("Loading") as? SKLabelNode
            self.playButton?.hidden = false
            self.playButton?.alpha = 0
            //loading?.hidden = true
            self.playButton?.runAction(SKAction.fadeAlphaTo(1.0, duration: 0.4))
            loading!.runAction(SKAction.fadeAlphaTo(0.0, duration: 0.4))
        })

    })
}

goToGameScene()由按钮个人 SKButton 类调用:

    func goToGameScene () {
        guard let nextScene = nextScene else {return}
        let transition = SKTransition.crossFadeWithDuration(0.5)
        nextScene.scaleMode = .AspectFill
        scene!.view?.presentScene(nextScene, transition: transition)
    }

更新 Swift 3

fileprivate var nextScene: SKScene?

func preloadGameScene () {
        let qualityOfServiceClass = DispatchQoS.QoSClass.background
        let backgroundQueue = DispatchQueue.global(qos: qualityOfServiceClass)
        backgroundQueue.async(execute: {
            self.nextScene = GameScene(fileNamed:"yoursksfilename")
            DispatchQueue.main.async(execute: { () -> Void in
                print("SCENE LOADED")
                let loading = self.childNode(withName: "Loading") as? SKLabelNode
                self.playButton?.isHidden = false
                self.playButton?.alpha = 0
                //loading?.hidden = true
                self.playButton?.run(SKAction.fadeAlpha(to: 1.0, duration: 0.4))
                loading?.run(SKAction.fadeAlpha(to: 0.0, duration: 0.4))
            })

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

缓慢的 Skscene 过渡 的相关文章

随机推荐

  • 通过 AVAssetReader 读取音频样本

    如何通过 AVAssetReader 读取音频样本 我找到了使用 AVAssetReader 复制或混合的示例 但这些循环始终由 AVAssetWriter 循环控制 是否可以只创建一个 AVAssetReader 并读取它 获取每个样本并
  • 如何设置邮件服务器?

    我希望任何发送电子邮件至 电子邮件受保护 并且服务器可以获取邮件 因此我可以使用一些服务器端脚本语言 例如 Ruby 来解析电子邮件的内容 Ruby 解决方案会很棒 如果您从未设置过 smtp 服务器 并且不愿意深入研究和学习很多内容 那么
  • 在表单上的标签或文本框中显示字段的描述

    我想要做的是在表单上的标签中显示当前所选字段的描述 我觉得它当前显示的位置 左下状态栏 几乎不明显 如何访问状态栏中的该值 例如 在我的表单上 当我选择 员工姓名 字段时 在左下角以小字显示 您正在注册的员工的姓名 我知道在我的表单上的某些
  • 使用 typescript 将 javascript 模块导入为动态

    我想导入一个普通的 javascript 模块 例如vhost 使用 CommonJS 进入我的 node js 打字稿文件 我可以用下面的行来做到这一点 import vhost require vhost 我们假设我在互联网上找不到 d
  • JavaScript-onclick

    第一次在这里发帖 但天知道我一直使用这个网站来搜索问题 P 好吧 我现在遇到了自己的问题 因为我似乎无法轻松地在 Google 上进行搜索 并且在玩完之后搞了两个多小时 终于决定发帖问一下大家的想法 我在这里想要完成的是 当您将鼠标悬停在
  • 如何将json对象数组保存到mongoose?

    我正在尝试将对象数组保存到猫鼬模式 但无法将数据加载到laptop模式我只看到一个插入包含id 如何将 json 对象数组保存到 mongoose 模式 控制器 js var laptopData name Hp probook 15 1
  • 以编程方式创建和呈现模态视图控制器

    我正在尝试以编程方式从使用情节提要启动的视图控制器中声明模式视图控制器 我希望看到一个空白视图 但我只看到来自第一个控制器的 Web 视图 void viewDidLoad super viewDidLoad NSString fullUR
  • 如何将 Excel 工作表导出为图像?

    我正在尝试从 Excel 工作表生成图像 经过大量研究后 我使用以下代码 但在某些时候我遇到了异常 using System using System Collections Generic using System Linq using
  • Flexslider 延迟加载 - 仅在真正需要时加载图像

    这实际上只是对 Flexslider 延迟加载的回答的后续内容here我正在使用我在下面粘贴的代码 我想更改它 以便仅在真正需要时加载图像 我尝试了其他 Flexslider 属性 之前 和之后 但它们在第一张幻灯片上造成了延迟 请问我可以
  • 如何使用 WSO2 ESB 从数据库检索多行?

    我想使用 wso2 esb 检索数据库中的多行 使用 dblookup 中介器我只能检索一行 建议使用 WSO2 DSS 你能帮我使用 DSS 完全检索 ESB 中的多行吗 Thanks 如果您不想使用 DSS 这就是我们的情况 那么您可以
  • React js组件,map可以工作,foreach不行

    我有一个呈现标签的组件 它循环遍历地图并显示数据 我尝试使用 forEach 但它不起作用 但是 如果我将映射转换为数组 它就可以工作 foreach 也不适用于数组 我在这里缺少什么 这有效 render return div class
  • 重命名模型和关系字段的 Django 迁移策略

    我计划重命名现有 Django 项目中的多个模型 其中有许多其他模型与我要重命名的模型具有外键关系 我相当确定这将需要多次迁移 但我不确定确切的过程 假设我从 Django 应用程序中的以下模型开始 名为myapp class Foo mo
  • Zoom:1;有什么bug在 CSS 中修复?

    我见过人们应用 CSS 属性zoom 1 在 HTML 元素上 他们为什么这样做 它修复了什么错误 这提供了一个称为hasLayout在 Internet Explorer 版本 7 及更低版本中 关于这个主题的权威文章在这里 http w
  • 在 iPhone 应用程序启动期间(即应用程序加载期间)播放电影文件

    我想播放电影文件或任何动画文件 直到时间应用程序未完全加载 有什么简单的方法可以做到吗 告诉别人他们想做什么是值得怀疑的 我的客户想要播放一部电影 而这只是一部 3 秒的电影 这就是所谓的品牌推广 如果他的用户不喜欢它 他们会告诉他
  • QT QImage - 将图像的一部分复制为多边形

    尝试将图像的一部分复制为多边形 特别是五边形 但我更感兴趣的是如何复制为除矩形之外的任何内容 以下代码仅允许复制为矩形 QImage copy const QRect rect QRect const inline QImage copy
  • AWS Fargate - 不使用 SES 端点从私有子网发送电子邮件

    我有一个带有自动缩放 Fargate 容器的配置 在公共子网配置或 NAT 配置中使用 SES 简单电子邮件服务时 电子邮件可以正确发送 当容器移动到具有 SES 端点接口的私有子网时 不再发送电子邮件 以下两个带有连接超时消息的选项 对于
  • 如何制作一组列表

    我有一个这样的列表 i 1 2 3 2 4 5 1 2 3 2 4 5 我想获得一个包含 唯一 列表 基于其元素 的列表 例如 o 1 2 3 2 4 5 我无法使用set 因为列表中有不可散列的元素 相反 我正在这样做 o for e i
  • 从 jBPM 流程访问数据库

    如何从 jBPM 流程访问数据库 您认为我可以使用脚本任务或人工任务的进入 退出操作连接到数据库吗 我建议不要使用人工任务的进入 退出操作来存储代码 弄清楚您将代码放在哪里可能是一场噩梦 因为当人工任务有代码时没有视觉线索 您可以尝试脚本任
  • Grails 限制表创建

    我想使用 Grails 功能在有限的基础上创建 更新数据库表 具体来说 我希望 Grails 管理一些表 但不是全部 有没有办法限制 Grails 管理的表 或者这是一个全有或全无的提议 一般来说 要么全有 要么全无 因为 Grails 使
  • 缓慢的 Skscene 过渡

    我有两个场景 家庭和玩耍 与到家庭场景的转换相比 到游戏场景的转换确实很慢 我想这是因为我的游戏场景中有更多的事情发生 有什么方法可以预加载播放场景吗 或者让过渡更加无缝 我对这个论坛的答案感兴趣预加载场景以防止延迟 但我不知道从哪里开始