2014-06-16 21 views
13

Tôi đang cố gắng phân lớp SKShapeNode bằng Swift. Cho đến nay tôi đã có một cái gì đó như thế này:Phân lớp SKShapeNode với Swift

import UIKit 
import SpriteKit 

class STGridNode: SKShapeNode { 

    init() { 
     super.init() 
     self.name = "STGridNode" 
     self.fillColor = UIColor(red: 0.11, green: 0.82, blue: 0.69, alpha: 1) 
    } 

} 

Trong mã của tôi, tôi muốn để làm điều gì đó dọc theo dòng:

let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100)) 

Vì vậy, câu hỏi của tôi là - làm thế nào để thực hiện rectOfSize trong initialiser cho STGridNode? Tôi đã thử:

init(rectOfSize: CGPoint) { 
    super.init(rectOfSize: rectOfSize); 
} 

Nhưng điều đó mang lại cho một lỗi: 'Không thể tìm thấy một tình trạng quá tải cho init chấp nhận các đối số cung cấp'

+1

lỗi gì bạn đang nhận được khi bạn thử phương pháp khởi tạo của bạn? – drewag

+0

@drewag, tôi đã cập nhật câu hỏi của mình với chi tiết hơn một chút. Cảm ơn :) – samturner

Trả lời

22

Bạn có hai vấn đề với mã bạn đã cố gắng:

  1. rectOfSize trong SKShapeNode mất một không CGSize một CGPoint
  2. rectOfSize trong SKShapeNode là một initializer tiện vì vậy bạn sẽ không thể gọi nó từ một lớp con. Bạn sẽ phải gọi super.init() và thực hiện các chức năng rect mình

Bạn có thể làm một cái gì đó như thế này:

init(rectOfSize: CGSize) { 
    super.init() 

    var rect = CGRect(origin: CGPointZero, size: rectOfSize) 
    self.path = CGPathCreateWithRect(rect, nil) 
} 
+0

Tuyệt vời, cảm ơn bạn - hoạt động tuyệt vời! – samturner

+1

self.path = CGPath (rect: rect, transform: nil) –

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