【问题标题】:Swift - Spritekit - Button fading in/outSwift - Spritekit - 按钮淡入/淡出
【发布时间】:2015-03-31 12:30:50
【问题描述】:

我希望我的按钮在改变场景时淡入,而不仅仅是他们的。 我正在使用精灵工具包,UIView.animateWithDuration 不起作用。

在 swift 中使用 sprite kit 还能怎么做?

【问题讨论】:

  • 如果按钮是指 UIButton,它不会,你也不应该在游戏中使用它。如果你想要一个按钮,你需要使用SKNode、SKSpriteNode等的子类来实现你自己的。
  • 感谢您为我澄清这一点,您能否提供一个快速示例来说明如何实现这一点或为我指明正确的方向?我需要用户单击的东西将他们带到特定场景(我认为按钮是最好的选择)
  • 当然,有一些很好的例子可以说明如何在由节点here 组成的按钮上实现触摸处理。接受的答案显示了基本思想,但下一个答案更有趣。它向您展示了如何对 SKSpriteNode 进行子类化以创建按钮类。这些答案在 Objective-C 中,但它们应该能很好地理解这一点。
  • 完美答案 - 非常感谢!现在将 Obj_c 翻译成 Swift ......我觉得出现了问题!哈哈 不过帮助很大!
  • 你不一定要翻译它。第二个答案似乎是完整的,因此您可以将其添加到您的项目中的 Objective-C 头文件/实现文件中,然后使用 bridging header 在 Swift 中使用它。完成此操作后,您可以按照下面@Christian Woerz 的回答中所述使用SKAction(及其淡入淡出相关方法)。

标签: swift button uiview fade


【解决方案1】:

我假设你正在使用 UIButtons,你真的不应该只使用 SKNodes(Sprites、Shapes、Labels 等)和触摸句柄的方法,例如: 触摸开始: 触动: 触摸结束:

如果你想构建一个按钮或开关以供通用使用,你应该试试我制作的这个控件,它的使用非常简单:

您只需初始化所需的按钮/开关类型(ColoredSprite、Textured 或 TextOnly)

let control = TWButton(normalColor: SKColor.blueColor(), highlightedColor: SKColor.redColor(), size: CGSize(width: 160, height: 80))`

在初始化之后,你添加一个闭包(比如 UIButton 上的 addTargetForSelector)

control.addClosureFor(.TouchUpInside, target: self, closure: { (scene, sender) -> () in
    scene.testProperty = "Changed Property"
    })
}

就是这样! GitHub 页面上的 readme 部分有更多信息:https://github.com/txaidw/TWControls

然后你可以使用动作来淡化你的按钮

SKAction.fadeAlphaTo(alpha:, duration:)

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多