Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 快速缩放操作不起作用_Swift_Xcode_Scaling_Skspritenode_Skaction - Fatal编程技术网

Swift 快速缩放操作不起作用

Swift 快速缩放操作不起作用,swift,xcode,scaling,skspritenode,skaction,Swift,Xcode,Scaling,Skspritenode,Skaction,我很难弄清楚为什么我的精灵不能在Swift 3和Xcode 8中伸缩。我有3个完全相同的精灵,ball1、ball2和ball3,它们都位于GameSecene.sks的中心,在游戏运行时完全可见。这是相关代码 var ball1 = SKSpriteNode() var ball2 = SKSpriteNode() var ball3 = SKSpriteNode() var signature = Double() var scaleFactor = Double() var score =

我很难弄清楚为什么我的精灵不能在Swift 3和Xcode 8中伸缩。我有3个完全相同的精灵,ball1、ball2和ball3,它们都位于GameSecene.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()

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

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

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

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


是否您的缩放操作只是返回值1,因此根本不进行缩放?如果不知道
score
是如何工作的,我就很难确切知道
scaleFactor
将是什么。我能想到的另一件事,应该是显而易见的,就是您需要在某个时候调用
myFunction()
,以便执行此块,尽管我相信您已经知道这一点。还有-当它与缩放直接相关时,为什么要用旋转来命名和标记?所有的优点,谢谢。我已经修复了最后的函数调用,标题和标签与其他一些问题混在一起,希望现在都解决了。分数将始终是从0开始的整数,因此不可能有1的值。谢谢你的建议,但这似乎不是我的问题。再次感谢你的建议,但它们似乎没有改变任何事情。但仍然没有一个可以扩展。你所说的关于我视图中心的内容也很有趣,但是0,0似乎确实成功地将我的精灵移动到了中心。我想知道这是不是最近在Xcode 8中发生了一些变化。
override func didMove(to view: SKView) 
{
    myFunction()
}