Tôi đang cố gắng làm việc với lớp học SKMutableTexture
của SpriteKit nhưng tôi không biết cách làm việc với UnsafeMutablePointer<Void>
. Tôi có một ý tưởng mơ hồ rằng nó là một con trỏ đến một loạt các dữ liệu byte trong bộ nhớ. Nhưng làm thế nào tôi có thể cập nhật nó? Điều này thực sự trông như thế nào trong mã?UnsafeMutablePointer <Void> là gì? Làm thế nào để sửa đổi bộ nhớ cơ bản?
Sửa
Đây là một mẫu mã cơ bản để làm việc với. Làm thế nào tôi có thể làm điều này đơn giản như tạo một hình vuông màu đỏ trên màn hình?
let tex = SKMutableTexture(size: CGSize(width: 10, height: 10))
tex.modifyPixelDataWithBlock { (ptr:UnsafeMutablePointer<Void>, n:UInt) -> Void in
/* ??? */
}
Chỉ cần thử với dự án SpriteKit mẫu trong Xcode và dường như làm điều đúng - nhưng tôi biết _nothing_ về SpriteKit nên không thể đảm bảo đây là "cách" để làm điều đó. –
Cảm ơn bạn điều này đang hoạt động. Bây giờ tôi nhìn thấy một hình vuông trên màn hình tuy nhiên, tôi đã mong đợi phương thức modifyPixelDataWithBlock được gọi một lần trên mỗi khung hình - giống như một loại thay thế cho trình đổ bóng phân đoạn nhưng khối chỉ được gọi một lần. Tìm hiểu thêm ... – Bret
Lưu ý rằng bạn cần chuyển các giá trị alpha trước khi nhân với phần RGB. Từ [tài liệu] (https://developer.apple.com/library/ios/documentation/SpriteKit/Tham khảo/SKMutableTexture_Ref/# // apple_ref/occ/instm/SKMutableTexture/modifyPixelDataWithBlock :) 'Các byte kết cấu được giả định được lưu trữ dưới dạng đóng gói chặt chẽ 32 bpp, 8bpc (số nguyên không dấu) RGBA pixel dữ liệu. Các thành phần màu bạn cung cấp nên đã được nhân với giá trị alpha.' – Benzi