2015-06-11 8 views
5
import SpriteKit 

class GameScene: SKScene { 
    var movingGround: JTMovingGround! 
    var hero: JTHero 

    override func didMoveToView(view: SKView) { 
     backgroundColor = UIColor(red: 159.0/255.0, green: 281.0/255.0, blue: 244.0/255.0, alpha: 1.0) 
     movingGround = JTMovingGround(size: CGSizeMake(view.frame.width, 20)) 
     movingGround.position = CGPointMake(0, view.frame.size.height/2) 
     addChild(movingGround) 

     hero = JTHero() 
     hero.position = CGPointMake(70, movingGround.position.y + movingGround.frame.size.height/2 + hero.frame.height/2) 
     addChild(hero) 
    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
     movingGround.start() 
    } 

    override func update(currentTime: CFTimeInterval) { 
     /* Called before each frame is rendered */ 
    } 
} 

क्या कोई मुझे बता सकता है कि क्या गलत हुआ ?? धन्यवादयह मुझे बताता है कि "कक्षा" गेमसेन के पास कोई प्रारंभिक नहीं है "

+0

यदि आपकी समस्या हल हो गई है तो आपको एक उत्तर स्वीकार करने की आवश्यकता है – Fogmeister

उत्तर

8

ऐसा इसलिए है क्योंकि आपके पास एक गैर-वैकल्पिक संपत्ति है जिसका डिफ़ॉल्ट मान नहीं है।

var hero: JTHero 

गैर-वैकल्पिक है लेकिन इसका कोई मूल्य नहीं है।

तो, आप इसे वैकल्पिक बनाने या तो कर सकते हैं

var hero: JTHero? 

करके या फिर आप एक init विधि बना सकते हैं और वहाँ में मूल्य निर्धारित कर सकते हैं।

या एक डिफ़ॉल्ट मान बनाने ...

var hero = JTHero() 

वहाँ बाद ऐसा करने के लिए कई तरीके हैं।

1

वर्ग और संरचनाओं चाहिए उस वर्ग का एक उदाहरण समय से एक उचित प्रारंभिक मूल्य के लिए उनकी संग्रहीत सभी गुणों की सेट या संरचना बनाई गई है। संग्रहीत गुणों को अनिश्चित स्थिति में नहीं छोड़ा जा सकता है।

आप किसी प्रारंभिक उपयोगकर्ता के भीतर एक संग्रहीत संपत्ति के लिए प्रारंभिक मान सेट कर सकते हैं, या संपत्ति की परिभाषा के हिस्से के रूप में डिफ़ॉल्ट संपत्ति मान निर्दिष्ट कर सकते हैं।

से अंश: एप्पल इंक स्विफ्ट प्रोग्रामिंग लैंग्वेज (स्विफ्ट 2 प्री-रिलीज़) iBooks। https://itun.es/us/k5SW7.l

आपका GameScene वर्ग अपनी संग्रहीत संपत्तियों के लिए किसी भी initializers स्थापित कर रही है नहीं और एक init() विधि को परिभाषित नहीं करता, और इस त्रुटि आप हो रही है कारण है।

+0

बहुत बहुत धन्यवाद। यह अभी तय है –

संबंधित मुद्दे

 संबंधित मुद्दे