繁体   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