【问题标题】:Swift-Scale SKAction not workingSwift-Scale SKAction 不起作用
【发布时间】:2017-06-06 14:25:36
【问题描述】:

我很难弄清楚为什么我的精灵在 Swift 3 和 Xcode 8 中没有缩放。我有 3 个相同的精灵,ball1、ball2 和 ball3,它们都在我的 GameScene.sks 的中心,并且完全可见游戏运行。这是相关代码;

var ball1 = SKSpriteNode()
var ball2 = SKSpriteNode()
var ball3 = SKSpriteNode()
var signature = Double()
var scaleFactor = Double()
var score = Double()
let signatureOptions = [1, -1]

ball1 = self.childNode(withName: "ball1") as! SKSpriteNode
ball2 = self.childNode(withName: "ball2") as! SKSpriteNode
ball3 = self.childNode(withName: "ball3") as! SKSpriteNode

func myFunction() {
    ball1.position = CGPoint(x: 0, y: 0)
    ball2.position = CGPoint(x: 0, y: 0)
    ball3.position = CGPoint(x: 0, y: 0)
    signature = Double(arc4random_uniform(UInt32(Double(signatureOptions.count))))
    scaleFactor = 35 / (0.5 + (score / 20))
    let scaleBall2 = SKAction.scale(by: CGFloat(((100 + scaleFactor) * signature) / 100), duration: 1)
    let scaleBall3 = SKAction.scale(by: CGFloat((((100 + scaleFactor) * signature) / 100) * -1), duration: 1)
    ball2.run(scaleBall2)
    ball3.run(scaleBall3)
}
myFunction()

运行时,所有精灵重新定位都按计划进行,它们都移动到中心。但在那之后绝对没有任何反应。我声明签名变量的行是否有问题,决定它们是增长还是缩小?因为目前他们什么都没做,所以如果有人知道需要发生的事情不是,我会非常感激。提前致谢。

【问题讨论】:

  • 可能是您的缩放操作只是返回值 1,因此根本没有缩放?在不知道score 的工作原理的情况下,我很难确切知道scaleFactor 将是什么。我能想到的唯一另一件事应该是显而易见的,即您还需要在某个时候调用myFunction() 才能执行此块,尽管我确信您已经知道这一点。另外 - 当它与缩放直接相关时,为什么它的标题和标签是旋转?
  • 所有优点,谢谢。我已经修复了最后的函数调用,标题和标签与其他一些问题混淆了,希望现在都解决了。分数将始终是从 0 开始的整数,因此不可能有 1 的值。不过,感谢您的建议,但这似乎不是我的问题。

标签: swift xcode scaling skspritenode skaction


【解决方案1】:

好的,我想我知道问题所在了!

首先,CGPoint(x: 0, y: 0) 实际上是您的SKView 左上角的点。要在屏幕中心创建节点,您需要执行CGPoint(x: self.size.width/2, y: self.size.height/2) 将节点放置在屏幕中心。

现在,要执行代码,您需要在didMove 函数内调用myFunction(相当于viewDidLoad),如下所示:

override func didMove(to view: SKView) 
{
    myFunction()
}

【讨论】:

  • 再次感谢您的建议,但它们似乎没有改变任何东西。他们仍然没有规模。您所说的关于我的视图中心的内容也很有趣,但是 0,0 确实似乎成功地将我的精灵移动到了中心。我想知道这是否是最近在 Xcode 8 或其他方面发生的变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多