簡體   English   中英

快速正確的語法,否則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM