2017-04-11 73 views
-1

我有一個UIimage,我想根據某些方程(物理拋射時間方程)給出的X和Y來移動,並且我希望它每移動一次,以便它看起來像用戶就好像它實際上在不斷移動並重新出現在最後一個位置,再加上發出的位置是錯誤的,我認爲。我將不勝感激任何一個或兩個問題的幫助。使UIimage每1秒移動

到目前爲止,我嘗試這樣做:

運動功能:

func moveCannonBall(toX:Int , toY:Int){ 
    var frm: CGRect = ballimageview.frame 
    frm.origin.x = frm.origin.x + CGFloat(toX) 
    frm.origin.y = frm.origin.y - CGFloat(toY) 
    ballimageview.frame = frm 
} 

在按鈕單擊它應該把用戶的輸入(重力,角度和初始速度)

@IBAction func getAlpha(sender:AnyObject){ 
    gravity = Float(g[pickerView.selectedRow(inComponent: 0)]) 
    xMax = ((V0*V0)*sin(2.0*angle))/gravity 

它應該停止每1秒,但只有計算暫停每1秒和UIimage只是消失並重新出現只是

while Int(toX) < Int(xMax) { 
     sleep(1) 
     t = t + 1 

     toX = V0*cos(angle)*t 
     toY = -0.5*gravity*t*t + V0*sin(angle)*t 

     moveCannonBall(toX: Int(toX), toY: Int(toY)) 
    } 
} 

任何幫助表示讚賞。

+1

**永不**(我的意思是永不)在主隊列上使用任何形式的'睡眠'。 – rmaddy

+0

所以它不是一個簡單的停頓? – Ace

+1

簡單的答案是不,它不是。您應該查看'UIView.animateWithDuration'方法,但是沿着漂亮的曲線移動球並不那麼簡單。 – Losiowaty

回答