SKTexure To UIImage,即 SpriteKit 截屏
2015-06-18 17:04
357 查看
SKTexure To UIImage,即 SpriteKit 截屏
问题来源
我们使用 SpriteKit 做游戏的时候,至少有两种时候需要写程序截屏:完成游戏关卡后,分享到社交网络
***关卡编辑器,并需要批量生成在选关界面显示关卡预览图
这个时候我们的第一反应差不多会是
SKView *skView = self.view; SKTexutre *tex = [skView textureFromNode:skView.scene];
然而你会发现在 iOS 9 和 OS X 10.11 到来之前,这个东西并没有什么卵用,因为你踏破铁鞋也找不到能把 SKTexture 转成 UIImage/NSImage/CGImage 的方法,即使你发现 XCode 6 Debug 的时候,设置断点可以预览 SKTexture。(这个时候确实挺想逆向一下看看 XCode 是怎么做到的,可惜不会。。。ORZ)
问题解决
目前亲测可用的唯一方法,还只能用在 iOS 上,如下:- (UIImage*) imageWithView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; }
然后
UIImage *img = [self imageWithView:self.skView];
如果想在 OS X 上用这个方法,抱歉不行,因为 上述方法
drawViewHierarchyInRect只在 UIIVew 中有效,NSView 没有这个方法。如果一定要在 OS X 上截图,可能需要考虑使用 OS X 截屏方面的 API 了。
好消息是,iOS 9 和 OS X 10.11 的 SDK 里面,SKTexture 已经自带一个 CGImage 属性,***关卡编辑器需要在 OS X 上截图的同学,看来需要尽快升级到 OS X 10.11 了。至于 iOS,显然还是需要继续使用老办法一段时间,毕竟用户的系统版本不归我们管。
相关文章推荐
- iOS开发-UISwipeGestureRecognizer滑动手势
- 织梦DedeCMS添加变量报错Request var not allow!的解决办法
- SeGue 多控制器跨界面传递数据原理
- Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
- adobe flash builder 4.6安装EGit
- Google I/O 2009 Make your Android UI Fast and Efficient
- Android 数据查询query函数参数解析
- 关于easyUI在子页面增加显示tabs的一个问题
- Hbuilder编辑器怎么用 使用方法(wap静态页面测试)
- UIScrollView增加回弹效果
- iOS UIButton 设置图片文字垂直排列
- win7怎么开启guest本地登录?
- 移动开发:dequeueReusableCellWithIdentifier的运行机制
- smart_stl::deque相关总结
- UIButton 详解
- UITextField详解
- UITableView优化
- iOS Programming: The Big Nerd Ranch Guide (4th Edition) 阅读笔记-关于 View Controllers及其生命周期
- 蓝牙4.0 128bit UUID
- iOS学习3_UI开发之纯代码/storyboard/xib