2015-06-11 19 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 */ 
    } 
} 

ai đó có thể cho tôi biết điều gì đã xảy ra ?? nhờNó tiếp tục nói với tôi "Lớp 'GameScene' không có bộ khởi tạo"

+0

Bạn cần chấp nhận câu trả lời nếu giải quyết được sự cố của bạn – Fogmeister

Trả lời

8

Đó là vì bạn có thuộc tính không bắt buộc không có giá trị mặc định.

var hero: JTHero 

Là không bắt buộc nhưng cũng không có giá trị.

Vì vậy, bạn có thể làm cho nó bắt buộc bằng cách làm

var hero: JTHero? 

Hoặc bạn có thể tạo ra một phương pháp init và thiết lập giá trị trong đó.

Hoặc tạo một giá trị mặc định ...

var hero = JTHero() 

Có rất nhiều cách để làm sau này.

1

Lớp học và cấu trúc phải thiết lập tất cả các thuộc tính lưu trữ của họ đến một giá trị ban đầu thích hợp vào thời điểm một thể hiện của lớp đó hoặc cấu trúc được tạo ra. Các thuộc tính được lưu trữ không thể được để ở trạng thái không xác định.

Bạn có thể đặt giá trị ban đầu cho thuộc tính được lưu trữ trong bộ khởi tạo hoặc bằng cách gán giá trị thuộc tính mặc định làm một phần của định nghĩa của thuộc tính.

Trích từ: Apple Inc. Ngôn ngữ lập trình Swift (Swift 2 Prerelease) iBooks. https://itun.es/us/k5SW7.l

Lớp học GameScene không đặt bất kỳ trình khởi tạo nào cho thuộc tính được lưu trữ của nó và không xác định phương thức init() và điều này gây ra lỗi bạn đang nhận.

+0

Cảm ơn bạn rất nhiều. Nó đã được sửa ngay –

Các vấn đề liên quan