gpt4 book ai didi

ios - 如何从 SKScene 中获取触摸像素颜色?

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:52 25 4
gpt4 key购买 nike

我有一个用 swift 编写的 spritekit 应用程序,我想获得我手指触摸的像素上的颜色。

我已经看到多个关于此的帖子并尝试了所有这些但无法接缝让它为我工作。根据其他帖子,应该可以从 UIView 获取颜色,并且由于 SKScene 具有继承自 UIView 的 SKIView,因此应该可以从那里获取颜色。

所以为了使问题简单易懂,我举了一个例子。

创建一个新的 spritekit 应用程序并向其添加图像。在我的例子中,我创建了一个 200x200 像素的 png 图像,其中有很多不同的颜色。

这是 GameScene.swift 文件,它是我从自动生成的文件中唯一更改的文件:

import SpriteKit

extension UIView {
func getColorFromPoint(point:CGPoint) -> SKColor {
var pixelData:[UInt8] = [0,0,0,0]

let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.toRaw())
let context = CGBitmapContextCreate(&pixelData, 1, 1, 8, 4, colorSpace, bitmapInfo)

CGContextTranslateCTM(context, -point.x, -point.y);
self.layer.renderInContext(context)

var red:CGFloat = CGFloat(pixelData[0])/CGFloat(255.0)
var green:CGFloat = CGFloat(pixelData[1])/CGFloat(255.0)
var blue:CGFloat = CGFloat(pixelData[2])/CGFloat(255.0)
var alpha:CGFloat = CGFloat(pixelData[3])/CGFloat(255.0)

var color:SKColor = SKColor(red: red, green: green, blue: blue, alpha: alpha)
return color
}
}

class GameScene: SKScene {

var myColorWheel:SKSpriteNode!

override func didMoveToView(view: SKView) {
let recognizerTap = UITapGestureRecognizer(target: self, action:Selector("handleTap:"))
view.addGestureRecognizer(recognizerTap)

myColorWheel = SKSpriteNode(imageNamed: "ColorWheel.png")
myColorWheel.anchorPoint = CGPoint(x: 0, y: 0)
myColorWheel.position = CGPoint(x: 200, y: 200)
self.addChild(myColorWheel)
}

func handleTap(recognizer : UITapGestureRecognizer)
{
let location : CGPoint = self.convertPointFromView(recognizer.locationInView(self.view))
if(myColorWheel.containsPoint(location))
{
let color = self.view?.getColorFromPoint(location)
println(color)
}
}
}

无论我在显示屏上的图像上按什么位置,结果始终是:可选(UIDeviceRGBColorSpace 0 0 0 0)

最佳答案

您是否尝试过先使用以下方式拍摄快照:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

然后从那个 View 中挑选颜色?

不确定系统如何在 SKView 中呈现 .layer。

希望对您有所帮助。

干杯

关于ios - 如何从 SKScene 中获取触摸像素颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com