[英]swift correct syntax if else while etc
我有一個SKSpritenode,可以在邊界內在屏幕周圍拖動。 我正在測試是否在邊界內。
if backgroundRect.contains(paddleRect){
let paddleX = paddle.position.x + (touchLocation.x - previousLocation.x)
let paddleY = paddle.position.y + (touchLocation.y - previousLocation.y)
paddle.position = CGPoint(x: paddleX, y: paddleY)
} else {
print ("paddleRect not contained by backgroundRect")
}
此刻,我可以在背景中拖動撥片。 當我拖動槳葉並碰到背景邊緣時,它不包含在背景中並停下來,所以我無法再移動它了。
我希望能夠僅在背景矩形內移動它,而不停止響應邊緣的拖動。 我知道“如果不是”不是執行此操作的正確方法,但是我想知道如何編寫它以便槳在背景矩形的邊界內保持移動。
它是“同時繼續”循環嗎? 或者是其他東西?
問題是,一旦退出矩形,您將失去更改槳的位置的能力。 因此,對backgroundRect.contains(paddleRect)
每個后續檢查將永遠返回false
。
相反,您應該做的是始終計算潛在位置,然后使用它,或者將其丟棄:
let potentialPosition = CGPoint(
x: paddle.position.x + (touchLocation.x - previousLocation.x),
y: paddle.position.y + (touchLocation.y - previousLocation.y)
)
// This line is approximated, I don't know the exact relation between
// `paddleRect` and `paddle`, but you get the idea
if backgroundRect.contains(potentialPosition) {
paddle.position = potentialPosition
} else {
print ("paddleRect not contained by backgroundRect")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.