언제든지 멈출 수있는 영원히 달리는 SKAction을 만들기 위해 노력했습니다. 나는 이런 식으로 일을했다 : Swift 3 (SpriteKit) : 영원히 루핑을 멈추는 SKAction에 지연이 있습니다.
override func didMove(to view: SKView) {
run(SKAction.repeatForever (
SKAction.sequence ([
SKAction.run(drawFrame),
SKAction.wait(forDuration: 0.01),
])), withKey: "frameDrawing"
)
}
는 그 다음 drawFrame 기능에 나는이 같은 SKAction을 중지하십시오 SKAction은이 후 3 ~ 4 번 이상 실행할 때 중지 어떤 이유
func drawFrame() {
//(code)
if stop {
removeAction(forKey: "frameDrawing")
}
}
그만 사실이되었습니다. 멈춤이 true로 설정되면 즉시 멈추고 싶습니다. 3 번 또는 4 번 더 반복하지 마세요.
누구든지이 문제를 해결하는 방법을 알고 있다면 많은 것을 시도했기 때문에 알려주세요. 문제를 해결하지 못하기 때문에 알려주십시오. 감사!
편집 : 나는 두 기능 전에 SKAction를 정의하는 데 필요한 때문에
var drawingFrame = SKAction()
class GameScene: SKScene, SKPhysicsContactDelegate {
override func didMove(to view: SKView) {
drawingFrame = SKAction.repeatForever (
SKAction.sequence ([
SKAction.run(drawFrame),
SKAction.wait(forDuration: 0.03),
]))
run(drawingFrame)
}
func drawFrame() {
//(code)
if stop {
drawingFrame.speed = 0.0
}
}
내가 시작시 빈 SKAction에 SKAction drawingFrame을 설정 한 이유를 궁금해하는 경우는 다음과 같습니다 여기 내 코드입니다 . 그렇지 않으면 두 기능에 대해 정의되지 않습니다.
동일한 문제가있는 사용자를 위해 편집 : 내 생각과 @ appzYourLife의 해결책을 사용하여 문제를 해결했습니다. 매번 작동하는 가장 효율적인 방법은 stop이 false 인 경우에만 코드를 실행하는 것입니다. 그러나 프로그램을 중지시키는 if 문이 해당 대괄호 밖에 있어야 SKAction이 결국 중지됩니다. 이것은 작업 코드입니다 :
원하는 경우 stop = false 문에 대해 if else 문을 사용할 수 있습니다.
그래, 내가 액세스 할 수 있도록이 같은 "트릭"최상위 선언을 않습니다. 이것이 최선의 방법인지는 모르겠지만 작동합니다. – Confused
내가 이것을 읽는 방법 (그리고 그것은 믿을만한 읽기가 아닙니다)이 방법이 효과적입니다. 액션이 멈춰야합니다. – Confused
그래, 그게 내가 생각했던거야. 조금 이상합니다. 어쨌든 팁 주셔서 감사합니다. –