나는 권투 시뮬레이션을 만들었고 이제 애니메이션을 추가하려고합니다. 이제, "Ref 's Countup"을 추가하여 미결 상태를 추가합니다. 나는 수많은 것을 시도했지만, 아무도 내가 원하는 것을 얻지 못했습니다.복싱 카운트 업/지연/타이머
Thread.sleep(forTimeInterval: 1)
knockdownNumber.text = "\(knockdownNumberInt)"
및
sleep(1)
knockdownNumber.text = "\(knockdownNumberInt)"
사람들은 UI를 일시 정지 : 나는이 시도했다. 그래서 그들은 적절한 시간을 기다렸지 만 본문은 변경하지 않았습니다. 다음은 모두 한 번만 계산됩니다 (즉, 1, 3 또는 1, 8).
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.knockdownNumber.text = "\(self.knockdownNumberInt)"
}
및
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { (timer) in
self.knockdownNumber.text = "\(self.knockdownNumberInt)"
}
및
func delay(_ delay:Double, closure:@escaping()->()) {
DispatchQueue.main.asyncAfter(
deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC)))/Double(NSEC_PER_SEC), execute: closure)
}
같은 지연 기능
delay(1) {
self.knockdownNumber.text = "\(self.knockdownNumberInt)"
}
I는 (이들 모두에서) 함수를 호출하는 방법은 이후 그는 최저를 얻는다. 이 코드는 다음과 같습니다.
knockdownNumber.text = "1"
knockdownNumberInt = 1
downSec()
knockdownNumberInt = knockdownNumberInt + 1
downSec()
knockdownNumberInt = knockdownNumberInt + 1
downSec()
if fighter2.endurance < 400 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
if fighter2.endurance < 300 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
if fighter2.endurance < 200 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
if fighter2.endurance < 100 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
if fighter2.endurance < 0 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
if fighter2.endurance < -100 {
knockdownNumberInt = knockdownNumberInt + 1
downSec()
}
나는 정말 당황 스럽다.
하나의 문제는 카운트가 완료 될 때까지 코드를 일시 중지하지 않는다는 것입니다. 그렇게하는 방법이 있습니까? – Peter
@ 피터해야합니다. 나는'timer.invalidate'를 호출했습니다. – Sweeper
하나 더 문제가 있습니다. 건너 뛰기 카운트 버튼을 누르고 다른 사람이 무너지면 카운트는 영원히갑니다. 건너 뛰기 버튼에서 카운트를 취소 할 수있는 방법이 있습니까? 고마워, Peter – Peter