1

在我的主应用程序中,我尝试使用 3D touch 来激活子弹发射,但结果似乎非常不一致,而且它并不总是给我写结果。当我使用此代码时,我的 iPhone 6S 也崩溃了,这是我用于测试的代码。

 for touch in touches {
        let location = touch.locationInNode(self)

        var force =  touch.force * 10
        var maxForce = touch.maximumPossibleForce

        print ("The force is")
        print (maxForce*4)
        print (force*10000000)

        if force != 0{


            myLabel.text = "Force"
            myLabel.fontSize = 45
            myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
            self.addChild(myLabel)
            myLabel.zPosition = 100000


        }

        else {

           myLabel.removeFromParent()
        }
4

1 回答 1

0

我猜它会崩溃,因为您多次向父级添加标签(您的 if 条件已损坏,无论您调用什么函数, ( touchesBegan, touchesMoved, touchesEnded) 只有其中一个条件始终为真,在touchesBeganand中touchesMoved,您的force 将始终 > 0,在您的 中touchEnded,您的 force 应该为 0。(我将假设此代码是您的touchMoved)相反,在您的 viewDidLoad 代码中添加您的标签,并使用 .hidden 字段显示/隐藏您的标签在你的动作上。(确保touchesEnded隐藏它)

于 2016-03-28T04:45:02.040 回答