2015-11-05 75 views
0

我在我的SKScene類中創建了一個名爲ForceTouch的新類。這是類型UIView。不知道這是否正確,但似乎已將錯誤帶走。 我的問題是;我已經計算了我的ForceTouch課程中的一個值,並且希望在我的SKScene課程中使用它。是否有可能做到這一點? 下面是我的代碼的副本:其他類的值

class ForceTouch: UIView {

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    if let touch = touches.first where traitCollection.forceTouchCapability == .Available { 

     let relativeForce = touch.force/touch.maximumPossibleForce 
     let forceMultiplier: CGFloat = 100 
     let playerFlight = CGFloat(relativeForce) * CGFloat(forceMultiplier) 
     var playerVelocity = CGPoint.zero 
     func flyPlayer() { 
      playerVelocity = CGPoint(x: 0, y: playerFlight) 
     } 

     flyPlayer() 

     } 
    } 
} 

我想用我已經計算出playerVelocity值,並在代碼以後使用它:超出了我的ForceTouch類的。 當我嘗試這樣做時,出現錯誤「使用未解析的標識符 - playerVelocity」。 請問有人能幫我解決這個問題嗎? 在此先感謝!

+0

嗨是的,我希望在我的'SKScene'類中儘可能使用'playerVelocity'值 – evorg88

+0

只需聲明它爲可選類變量而不是函數內的局部變量。並習慣一些基本的面向對象的原則。 –

回答

1

如果你必須從你的ForceTouch類diractly使用playerVelocity值,那麼你可以做到這一點的例子是這樣的:

class ForceTouch: UIView { 

    var playerVelocity = CGPoint.zero 

    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     if let touch = touches.first where traitCollection.forceTouchCapability == .Available { 
      let relativeForce = touch.force/touch.maximumPossibleForce 
      let forceMultiplier: CGFloat = 100 
      let playerFlight = CGFloat(relativeForce) * CGFloat(forceMultiplier) 
      func flyPlayer() { 
       playerVelocity = CGPoint(x: 0, y: playerFlight) 
      } 

      flyPlayer() 
     } 
    } 
} 

,然後在SKScene類從ForceTouch對象像forceTouch.playerVelocity得到它,forceTouch是對象的ForceTouch類,你有你的SKScene

或者,如果你需要發送playerVelocity parrent類後一些行動,你需要使用委託機制

+0

非常好,工作完美。非常感謝您花時間回答我的問題! – evorg88