我们已经能够使用textureFromNode API从节点及其所有子项创建SKTexture.但到目前为止,我们无法找出将图像数据提取为NSImage的方法.我们正在构建一个混合的Cocoa / SpriteKit应用程序,我们需要提取场景的小缩略图.
再次,这似乎可能在iOS(获得UIImage)使用drawVIEwHIErarchyInRect:
UIGraphicsBeginImageContextWithOptions(self.vIEw.bounds.size,NO,scale);[self drawVIEwHIErarchyInRect:self.bounds afterScreenUpdates:YES];UIImage *vIEwImage = UIGraphicsGetimageFromCurrentimageContext();UIGraphicsEndImageContext();
但是如何在可可与NSImage做这个?帮帮我.
解决方法 没有直接访问SKTexture的图像数据.您可以将该节点呈现在屏幕外场景中,并捕获视图层次结构.我在iOS中使用这个代码作为参考:class func imageFromNode(node : SKNode,inScene scene: SKScene) -> UIImage? { if let texture = scene.vIEw?.textureFromNode(node) { let vIEw = SKVIEw(frame: CGRect(origin: CGPointZero,size: texture.size())) vIEw.allowsTransparency = true vIEw.backgroundcolor = SKcolor.clearcolor() let scene = SKScene(size: vIEw.bounds.size) scene.vIEw?.allowsTransparency = true scene.backgroundcolor = SKcolor.clearcolor() let sprite = SKSpriteNode(texture: texture) sprite.position = CGPoint(x: CGRectGetMIDX(vIEw.frame),y: CGRectGetMIDY(vIEw.frame)) scene.addChild(sprite) vIEw.presentScene(scene) UIGraphicsBeginImageContextWithOptions(vIEw.bounds.size,false,0.0) vIEw.drawVIEwHIErarchyInRect(vIEw.bounds,afterScreenUpdates: true) let image = UIGraphicsGetimageFromCurrentimageContext() UIGraphicsEndImageContext() return image } return nil}总结
以上是内存溢出为你收集整理的objective-c – 渲染/快照SpriteKit场景到NSImage全部内容,希望文章能够帮你解决objective-c – 渲染/快照SpriteKit场景到NSImage所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)