swift - 在界面生成器的 SKScene 中隐藏节点

标签 swift interface-builder skscene sknode

我在界面生成器中完成了几个 SKScene,其中我在屏幕上可见的 SKScene 部分中放置了几个 Sprite

我希望一些 Sprite 只在稍后出现,所以我开始在 didMoveToView 方法的开头隐藏它们。

override func didMoveToView(view: SKView)
{
        // Reading of the sprites created in the SKScene in the interface builder
    BackgroundLayer = self.childNodeWithName("BackgroundLayer") as! SKSpriteNode
    LettreB = self.childNodeWithName("B0") as! SKSpriteNode
    LettreB.hidden = true
    LettreR = self.childNodeWithName("R0") as! SKSpriteNode
    LettreR.hidden = true
    LettreI = self.childNodeWithName("I0") as! SKSpriteNode
    LettreI.hidden = true
}

我遇到的问题是,在运行该应用程序时,我会非常短暂地看到所有 Sprite ,然后才隐藏它们。

即使我在界面生成器中将 blendfactor 设置为 1(并将 blendmode 设置为 Alpha), Sprite - 然后在界面生成器中不再可见 - 非常短暂地出现然后在运行应用程序时消失

除了将 Sprite 放在可见区域之外并在我需要它们出现时移动它们之外,有没有办法避免这种情况?我应该在调用 didMoveToView 之前将代码放在其他地方吗?

注意:这个问题只发生在直接从设备运行应用程序时,而不是当应用程序通过 Xcode 启动时,我猜是出于某些性能原因。

最佳答案

通常使用大写的属性名称被认为是一种不良态度,您应该使用 backgroundLayer 或 lettreB

这种改变可以通过不同的方式来实现(在 SKScene 初始化方法中,或者通过自定义你的 SKSpriteNode 并改变他的初始化),其中之一是在之前的 SKSceneUIViewController 中创建场景并调用它:

 override func viewDidLoad() {
        super.viewDidLoad()
        print("---")
        print("∙ \(NSStringFromClass(self.dynamicType))")
        print("---")
        let skView = self.view as! SKView
        if let scene = MyScene(fileNamed:"MyScene") {
           var letter = scene.childNodeWithName("LettreB") as! SKSpriteNode //for example
           letter.hidden = true //for example
           skView.presentScene(scene)
        }
 }

关于swift - 在界面生成器的 SKScene 中隐藏节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37480429/

相关文章:

cocoa - 如何在 Interface Builder 中创建 IBOutlet

swift - 调用过渡方法时,SKScene 返回 nil

ios - 类型 'GameScene' 的值在 Swift 中没有成员 'presentViewController'

ios - 错误: Could not find overload for 'title' that accepts the supplied arguments

swift - ANTLR 中 WS 背后的魔力是什么?

ios - NSDateComponentsFormatter 上的 allowsFractionalUnits 我做错了什么?

swift - 如何通过引用分配 Swift 结构?

ios - 当我在其中放置一个 UI 元素时,为什么 UIScrollView 不滚动?

iPhone 导航栏按钮,使用自定义图像,通过 Interface Builder 完成

ios - 从 UIViewController 呈现 SKScene - Swift