2015-07-20 6 views
8

Ho aggiunto un pulsante personalizzato alla vista scenaKit. Quando viene toccato, riproduce un'animazione, a indicare che è stato fatto clic. Il problema che sto affrontando è il ritardo tra il tocco dell'utente e l'inizio dell'animazione. La mia scena ha triangoli 28.1K e vertici 84.4K. È troppo o ho bisogno di implementare i pulsanti in modo diverso. La scena viene visualizzata con 60 fps. Ho aggiunto il pulsante tramite sceneView.addSubview: Grazie per le risposteaggiunto pulsante alla vista sceneKit ma ha un ritardo

 viewDidLoad(){ 
    // relevant code 
     starButton = UIButton(type: UIButtonType.Custom) 
     starButton.frame = CGRectMake(100, 100, 50, 50) 
     starButton.setImage(UIImage(named: "yellowstar.png"), forState: UIControlState.Normal) 
     sceneView.addSubview(starButton) 
     starButton.addTarget(self, action: "starButtonClicked", forControlEvents: UIControlEvents.TouchUpInside) 
     starButton.adjustsImageWhenHighlighted = false 
     } 



    func starButtonClicked(){ 
      animateScaleDown() 

     } 

    func animateScaleDown(){ 

     UIView.animateWithDuration(0.1, animations: { 
      self.starButton.transform = CGAffineTransformMakeScale(0.8, 0.8) 

      }, completion: { _ in 
       self.wait() 
     }) 

    } 

    func wait(){ 
     UIView.animateWithDuration(0.2, animations: {}, completion: { _ in 
      UIView.animateWithDuration(0.2, animations: { 
       self.starButton.transform = CGAffineTransformMakeScale(1, 1) 

      }) 
     }) 
    } 
+0

Puoi pubblicare il codice touch e animazione? – aramusss

+0

Ho modificato la mia domanda – brumbrum

+0

Quanto ritardo è? Se sei molto sensibile, potresti vedere i 2 fotogrammi di ritardo inerenti all'SDK e iOS prima che inizi l'animazione. – Confused

risposta

5

Ok ho risolto. Il pezzo problematica di codice è

starButton.addTarget(self, action: "starButtonClicked", forControlEvents: UIControlEvents.TouchUpInside) 

UIControlEvent.TouchUpInside dà l'illusione di ritardo. Cambiarlo in .TouchDown è molto meglio.