Swift-Scale SKAction 不起作用

标签 swift xcode scaling skspritenode skaction

我无法弄清楚为什么我的 Sprite 在 Swift 3 和 Xcode 8 中无法缩放。我有 3 个相同的 Sprite ,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()

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

最佳答案

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

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

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

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

关于Swift-Scale SKAction 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783280/

相关文章:

swift - 格式化一天中的时间 Swift 早上/下午/晚上/任何时间

xcode - 在 XCode 4 模板中创建子组

r - R 包 lme4 中的 glmer 要求缩放变量,即使变量已经缩放

architecture - 在 Azure 上托管托管应用程序

AVFAudio 的 IOS 内存泄漏 - AVAudioSession

arrays - 在 Swift 中遍历数组时,是否有循环索引/迭代的引用?

swift - 在 Swift 中获取整数的字符 ASCII 值

ios - NSNotification 用户信息示例?

swift - Xcode 错误 - 体系结构 x86_64 的 undefined symbol ?

image - Bing map silverlight 控件图钉缩放问题