当前位置: 首页 > 面试题库 >

如何在Swift中过渡场景

晏德佑
2023-03-14
问题内容

在Objective-C中,使用Sprite-Kit,我将在Objective-C中 成功 使用类似以下代码的内容来展示新场景

if ([touchedNode.name  isEqual: @"Game Button"]) {
        SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0];
        GameScene *newGameScene = [[GameScene alloc] initWithSize: self.size];
        //  Optionally, insert code to configure the new scene.
        newGameScene.scaleMode = SKSceneScaleModeAspectFill;
        [self.scene.view presentScene: newGameScene transition: reveal];
    }

在尝试将我的简单游戏移植到Swift时,到目前为止,我已经完成了这项工作…

for touch: AnyObject in touches {
        let touchedNode = nodeAtPoint(touch.locationInNode(self))
        println("Node touched: " + touchedNode.name);
        let touchedNodeName:String = touchedNode.name

        switch touchedNodeName {
        case "Game Button":
            println("Put code here to launch the game scene")

        default:
            println("No routine established for this")
        }

但是我不知道要写什么代码才能真正过渡到另一个场景。问题:

  1. 有人可以提供在Swift中使用SKTransition的示例吗?
  2. 假设您将使用Objective-C,通常是否会创建另一个“文件”以将另一个场景代码放入另一个场景,或者是否有使用Swift的方式,这意味着我应该以不同的方式处理?

谢谢


问题答案:

首先要解决第二个问题,这取决于您。如果您愿意,您可以继续遵循Objective-C的约定,即每个文件只有一个类,尽管这不是必需的,并且在Objective-
C中也没有。话虽这么说,如果您有几个紧密相关的类,但是它们不是由很多代码组成,那么将它们组合在一个文件中并不是没有道理的。只要做对的事情,就不要在单个文件中编写大量的代码。

然后是第一个问题…是的,您已经掌握了很多。基本上,从您起步的地方,您需要通过其大小创建一个GameScene实例:初始值设定项。从那里,您只需设置属性并调用present。

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    super.touchesBegan(touches, withEvent: event)

    guard let location = touches.first?.locationInNode(self),
        let scene = scene,
        nodeAtPoint(location) == "Game Button" else {
        return
    }

    let transition = SKTransition.reveal(
        with: .down, 
        duration: 1.0
    )

    let nextScene = GameScene(size: scene.size)
    nextScene.scaleMode = .aspectFill

    scene.view?.presentScene(nextScene, transition: transition)
}


 类似资料:
  • 因此,我显示中间iAd的代码可以工作,但加载广告的速度很慢。当用户在我的GameOver场景中,他们点击“重试”时,它会进行随机数字检查,如果数字与我说的数字匹配,它会使用NSNotificationCenter加载我的中间iAd。 在我的游戏over scene中,当用户点击replay时,这是转换场景的代码: 从加载指令场景到显示间隙iAd之间有1-3秒的延迟,所以有人知道如何在用户点击重试时

  • 问题内容: 在我的应用程序中,我想用JTable的行创建过渡效果。例如,当鼠标进入该行时,该行的背景颜色将改变;相反,当鼠标退出该行时,该行的颜色将恢复正常。 我怎样才能做到这一点? 问题答案: 使用下面的代码,这将为您提供关于对JTable的行应用翻转效果的想法。

  • 假设你在component.html有两个这样的裂口 当您将htmlSegment设置为a或b时,我们知道真实值段会出现,而另一个会消失。没有问题。 但是,如何才能使这些片段的外观和消失具有一些过渡效果;例如淡入或淡出等? 是否有可能确保在新的htmlSegment中完成dom之后开始转换?(这是为了使用户不会体验到任何闪烁或页面抖动,除了令人敬畏的淡入淡出。)

  • 关于过渡 在 Glide 中,Transitions(直译为”过渡”) 允许你定义 Glide 如何从占位符到新加载的图片,或从缩略图到全尺寸图像过渡。Transition 在单一请求的上下文中工作,而不会跨多个请求。因此,Transitions 并不能让你定义从一个请求到另一个请求的动画(比如,交叉淡入效果)。 默认过渡 不同于 Glide v3,Glide v4 将不会默认应用交叉淡入或任何其

  • Wiki ▸ [[API--中文手册]] ▸ [[核心函数]] ▸ 过渡 过渡是一种特殊类型的选择器([[selection|选择器]]),这种操作符的应用随时间平滑而不是瞬间变换。你可以使用过渡[[transition()|选择器#transition]] 操作符从选择得到一个过渡。但是,过渡通常支持和选择器(例如attr和style)一样的操作符,不是所有的操作符都支持。例如,你必须在过渡开始

  • 在视图中,过渡效果是常见的场景。平滑的过渡动画能够给用户更好的感官体验。san 提供了基础的过渡机制,你可以基于此开发丰富的过渡效果。 版本:>= 3.3.0 s-transition 在元素上通过 s-transition 指令,可以声明过渡动画控制器。 <button s-transition="opacityTransition">click</button> 这个对象是元素 owner