在界面生成器的 SKScene 中隐藏节点
Hide node in SKScene in interface builder
我在界面生成器中完成了几个 SKScene,其中我在屏幕上可见的 SKScene 部分中放置了几个精灵
我希望一些精灵只在稍后出现,所以我开始在 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
}
我遇到的问题是,当 运行 应用程序时,我会在隐藏之前非常短暂地看到所有精灵。
即使我在界面生成器中将 blendfactor 设置为 1(并将 blendmode 设置为 Alpha),精灵 - 然后在界面生成器中不再可见 - 非常短暂地出现然后在 运行 应用程序时消失
除了将精灵放在可见区域之外并在我需要它们出现时移动它们之外,是否有其他方法可以避免这种情况?我应该在调用 didMoveToView 之前将代码放在其他地方吗?
注意:这个问题只发生在 运行 应用程序直接从设备上,而不是当应用程序通过 Xcode 启动时,我猜是出于某些性能原因。
属性名通常使用大写被认为态度不好,应该使用backgroundLayer或lettreB
这种更改可以通过不同的方式进行(在 SKScene
初始化方法期间,或者通过自定义您的 SKSpriteNode
并更改他的初始化),其中之一是在之前的 SKScene
或 UIViewController
创建场景并将其命名为:
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)
}
}
我在界面生成器中完成了几个 SKScene,其中我在屏幕上可见的 SKScene 部分中放置了几个精灵
我希望一些精灵只在稍后出现,所以我开始在 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
}
我遇到的问题是,当 运行 应用程序时,我会在隐藏之前非常短暂地看到所有精灵。
即使我在界面生成器中将 blendfactor 设置为 1(并将 blendmode 设置为 Alpha),精灵 - 然后在界面生成器中不再可见 - 非常短暂地出现然后在 运行 应用程序时消失
除了将精灵放在可见区域之外并在我需要它们出现时移动它们之外,是否有其他方法可以避免这种情况?我应该在调用 didMoveToView 之前将代码放在其他地方吗?
注意:这个问题只发生在 运行 应用程序直接从设备上,而不是当应用程序通过 Xcode 启动时,我猜是出于某些性能原因。
属性名通常使用大写被认为态度不好,应该使用backgroundLayer或lettreB
这种更改可以通过不同的方式进行(在 SKScene
初始化方法期间,或者通过自定义您的 SKSpriteNode
并更改他的初始化),其中之一是在之前的 SKScene
或 UIViewController
创建场景并将其命名为:
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)
}
}