我需要在Swift中獲取我的遊戲的像素/點的顏色。所以我試圖找到一個輸入一個CGPoint並返回一個Color的函數,到目前爲止我發現的所有東西都只返回(0,0,0,0)。我認爲這是因爲我在我的遊戲場景類(這是一個SKScene)中執行此操作,並且場景僅由視圖控制器加載。任何方案?在SKScene swift中獲取點的顏色
(如果有更好的方法來檢查,如果一個精靈被觸摸的顏色,將工作以及)
在此先感謝。
我需要在Swift中獲取我的遊戲的像素/點的顏色。所以我試圖找到一個輸入一個CGPoint並返回一個Color的函數,到目前爲止我發現的所有東西都只返回(0,0,0,0)。我認爲這是因爲我在我的遊戲場景類(這是一個SKScene)中執行此操作,並且場景僅由視圖控制器加載。任何方案?在SKScene swift中獲取點的顏色
(如果有更好的方法來檢查,如果一個精靈被觸摸的顏色,將工作以及)
在此先感謝。
添加下面的方法:
extension UIView {
func getColor(at point: CGPoint) -> UIColor{
let pixel = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: 4)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
let context = CGContext(data: pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)!
context.translateBy(x: -point.x, y: -point.y)
self.layer.render(in: context)
let color = UIColor(red: CGFloat(pixel[0])/255.0,
green: CGFloat(pixel[1])/255.0,
blue: CGFloat(pixel[2])/255.0,
alpha: CGFloat(pixel[3])/255.0)
pixel.deallocate(capacity: 4)
return color
}
}
你可以得到你想要的點的顏色與
let color = someView.getColor(at: somePoint)
http://stackoverflow.com/questions/1160229/how-to-get一個像素在uiview中的顏色具有代碼Swift 2和3:http://stackoverflow.com/a/26945594/1187415 –
@MartinR這些解決方案似乎只返回透明/黑色爲以及 – joshLor
取決於你何時/如何得到它。場景和視圖完全是2種不同的東西,所以你場景中的座標可能不會反映你在視圖中的座標,加上內容直到繪製之後纔會呈現給上下文。最重要的是,你需要擔心視網膜,這也可能導致無效像素。也許真正的問題是,爲什麼你需要一個單獨的點,並有更好的選擇? – Knight0fDragon