swift स्विफ्ट, प्रेत किट गेम: क्या चक्र दक्षिणावर्त तरीके से गायब हो गया है? टाइमर पर?



timer xcode6 (1)

किसी निश्चित अंतराल पर SKShapeNode की path संपत्ति को बदलकर, आप फ्रेम-बाय-फ़्रेम एनीमेशन अनुक्रम बना सकते हैं। एनीमेशन बनाने के लिए, एक सर्कल के साथ शुरू होने वाले आकृतियों के अनुक्रम के लिए path गुण सेट करें और कुछ नहीं के साथ समाप्त होता है आप UIBezierPath , CGPath के लिए आवरण का उपयोग कर सकते हैं, निम्न चरणों का उपयोग करके एनीमेशन के लिए आकार बना सकते हैं:

  1. पथ के "पेन" को केंद्र के केंद्र में ले जाएं
  2. AddArcWithCenter के साथ पथ को startAngle करने के लिए एक startAngle ऐन्जेल से एंडएन्ज में चाप जोड़ें
  3. केंद्र को समापन के कोण से संबंधित सर्कल के बिंदु से पथ में एक पंक्ति जोड़ें
  4. एक निश्चित राशि से endAngle को बदलें
  5. दोहराएं चरण 1-4

यहां ऊपर दिए गए चरणों का कार्यान्वयन है:

override func didMove(to:SKView) {

    let circle = SKShapeNode(circleOfRadius: 50)
    circle.fillColor = SKColor.blue
    circle.strokeColor = SKColor.clear
    circle.zRotation = CGFloat.pi / 2
    addChild(circle)

    countdown(circle: circle, steps: 20, duration: 5) {
        print("done")
    }
}

// Creates an animated countdown timer
func countdown(circle:SKShapeNode, steps:Int, duration:TimeInterval, completion:@escaping ()->Void) {
    guard let path = circle.path else {
        return
    }
    let radius = path.boundingBox.width/2
    let timeInterval = duration/TimeInterval(steps)
    let incr = 1 / CGFloat(steps)
    var percent = CGFloat(1.0)

    let animate = SKAction.run {
        percent -= incr
        circle.path = self.circle(radius: radius, percent:percent)
    }
    let wait = SKAction.wait(forDuration:timeInterval)
    let action = SKAction.sequence([wait, animate])

    run(SKAction.repeat(action,count:steps-1)) {
        self.run(SKAction.wait(forDuration:timeInterval)) {
            circle.path = nil
            completion()
        }
    }
}

// Creates a CGPath in the shape of a pie with slices missing
func circle(radius:CGFloat, percent:CGFloat) -> CGPath {
    let start:CGFloat = 0
    let end = CGFloat.pi * 2 * percent
    let center = CGPoint.zero
    let bezierPath = UIBezierPath()
    bezierPath.move(to:center)
    bezierPath.addArc(withCenter:center, radius: radius, startAngle: start, endAngle: end, clockwise: true)
    bezierPath.addLine(to:center)
    return bezierPath.cgPath
}

और एक वीडियो क्लिप:

ठीक है, इसलिए मुझे इसके लिए नाम नहीं पता है, लेकिन मेरे पास एक प्रेत किट गेम है (एक रनर गेम), जब यह खेल खत्म हो जाएगा, तो "मुझे बचाओ" बटन और एक टाइमर जो तदनुसार चलाता है। टाइमर समाप्त होने पर, आप अब बटन पर क्लिक नहीं कर सकते और चरित्र को बचा सकते हैं।

मैं इस टाइमर को पाठ में प्रदर्शित नहीं करना चाहता हूं, हालांकि- मुझे एक ऐसा मंडल चाहिए जो "खुद को खोलना," यदि आप चाहेंगे, और उस दर पर गायब हो जाएंगे जो टाइमर खत्म हो जाए। Ie जब टाइमर 0 तक पहुंचता है, तो सर्कल पूरी तरह से गायब हो गया है। चक्र घड़ी के अनुसार एक दक्षिणावर्त गति में डिग्री से डिग्री गायब हो जाता है।

यहाँ कुछ चित्रों को बताया गया है कि मैं किस बारे में बात कर रहा हूं।

यह मैं कैसे करूंगा?





sprite-kit