首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SpriteKit中使用CAGradientLayer?

在SpriteKit中使用CAGradientLayer?
EN

Stack Overflow用户
提问于 2014-05-29 00:37:38
回答 3查看 624关注 0票数 3

我创建了一个CAGradientLayer,它工作得非常好。但我的问题是,我想在SpriteKit中使用它作为背景...

有没有可能实现它?也许可以把它放在SKSpriteNode里?

提前感谢

编辑:

不幸的是,有一条错误消息:

5月28日19:08:19 amirs mbp Gradient2845 : CGContextSaveGState:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextSaveGState:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextClipToRect:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextTranslateCTM:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextScaleCTM:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextDrawLinearGradient:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextRestoreGState:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。5月28日19:08:19 amirs mbp Gradient2845 : CGContextRestoreGState:无效上下文0x0。这是一个严重的错误。此应用程序或其使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体降级。此通知是出于礼貌:请解决此问题。在即将到来的更新中,它将成为一个致命错误。

EN

回答 3

Stack Overflow用户

发布于 2015-04-05 14:35:02

我认为你会有更好的运气:

https://github.com/braindrizzlestudio/BDGradientNode

票数 2
EN

Stack Overflow用户

发布于 2014-05-29 00:46:01

首先将图层转换为UIImage*

代码语言:javascript
复制
- (UIImage *)imageFromLayer:(CALayer *)layer
{

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
        UIGraphicsBeginImageContextWithOptions([layer frame].size, NO, [UIScreen mainScreen].scale);
    else
        UIGraphicsBeginImageContext([layer frame].size);

    [layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return outputImage;
}

然后用它初始化一个SKSpriteNode:

代码语言:javascript
复制
SKSpriteNode* node = [SKSpriteNode spriteNodeWithColor:[UIColor colorWithPatternImage:image] 
                                   size:yourLayer.bounds.size]
票数 1
EN

Stack Overflow用户

发布于 2015-01-30 04:43:49

这个函数适用于我从CAGradientLayer创建SpriteNode。请注意,它是GameScene的一个函数,所以这是它引用的'self.frame‘上下文,以获得正确的渐变大小。

代码语言:javascript
复制
func layerToSKSpriteNode(layer : CALayer) -> SKSpriteNode
{
    var view = UIView()
    layer.frame = self.frame
    view.layer.addSublayer(layer)

    UIGraphicsBeginImageContext(self.frame.size)
    view.layer.renderInContext(UIGraphicsGetCurrentContext())
    var bgImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return SKSpriteNode(texture: SKTexture(image: bgImage))
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23917299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档