Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SpriteKit背景PNG,Alpha显示黑色_Ios_Iphone_Swift_Sprite Kit_Png - Fatal编程技术网

Ios SpriteKit背景PNG,Alpha显示黑色

Ios SpriteKit背景PNG,Alpha显示黑色,ios,iphone,swift,sprite-kit,png,Ios,Iphone,Swift,Sprite Kit,Png,我有一个用Swift制作的Spritekit游戏,游戏结束后,我有一个背景是png文件,其alpha值为0.5ish(因此是透明的)。我是用photoshop制作的 我用它来淡化比赛细节,并把记分卡放在上面 当我在运行iOS 9.2的iPhone6Plus上使用它时,它工作得非常好,会淡化细节并显示记分卡。。。但当我在运行iOS 9.2的模拟器或运行iOS 8.4的iPhone5c上运行它时,它只是显示为黑色。。。覆盖整个游戏屏幕 声明如下: //alpha'sd png created

我有一个用Swift制作的
Spritekit
游戏,游戏结束后,我有一个背景是
png
文件,其alpha值为0.5ish(因此是透明的)。我是用photoshop制作的

我用它来淡化比赛细节,并把记分卡放在上面

当我在运行iOS 9.2的iPhone6Plus上使用它时,它工作得非常好,会淡化细节并显示记分卡。。。但当我在运行iOS 9.2的模拟器或运行iOS 8.4的iPhone5c上运行它时,它只是显示为黑色。。。覆盖整个游戏屏幕

声明如下:

    //alpha'sd png created in photoshop. approx. 0.3 alpha
    let backdrop = SKSpriteNode(imageNamed: "Background_Alpha") 

    backdrop.anchorPoint = CGPoint(x: 0.5, y: 1.0)
    backdrop.position = CGPoint(x: size.width/2, y: size.height)
    backdrop.name = "ScoreScreen"
    backdrop.zPosition = Layer.UIBackground.rawValue
    worldNode.addChild(backdrop)
    backdrop.alpha = 0
    let drop = SKAction.fadeInWithDuration(kAnimDelay)
    drop.timingMode = .EaseInEaseOut
    backdrop.runAction(SKAction.sequence([
        SKAction.waitForDuration(kAnimDelay),
        drop
        ]))
并这样称呼:

    //alpha'sd png created in photoshop. approx. 0.3 alpha
    let backdrop = SKSpriteNode(imageNamed: "Background_Alpha") 

    backdrop.anchorPoint = CGPoint(x: 0.5, y: 1.0)
    backdrop.position = CGPoint(x: size.width/2, y: size.height)
    backdrop.name = "ScoreScreen"
    backdrop.zPosition = Layer.UIBackground.rawValue
    worldNode.addChild(backdrop)
    backdrop.alpha = 0
    let drop = SKAction.fadeInWithDuration(kAnimDelay)
    drop.timingMode = .EaseInEaseOut
    backdrop.runAction(SKAction.sequence([
        SKAction.waitForDuration(kAnimDelay),
        drop
        ]))
这是模拟器的屏幕截图。。。但正如我提到的,它也发生在我的iPhone5c上,8.4

黑色应该是透明的蓝色光线,允许玩家在背景中仍然可以看到游戏,但没有那么生动

你知道为什么吗?

所以有一个答案是:

根据文件:

雪碧套件仅适用于纯色。为了获得最佳效果,请使用 平台类提供的预设颜色或定义的自定义颜色 在RGBA设备颜色空间中

我不知道这是否仍然正确,但我所做的不是使用
alpha'd png
,而是使用Spritekit从头开始创建它,并按如下方式调用它:

    let backdrop = SKSpriteNode(color: 
                          SKColor(red: 29.0/255.0, 
                                green: 113.0/255.0, 
                                 blue: 149.0/255.0, 
                                alpha: 0.3),         //set alpha here
                                 size: size)

    backdrop.position = CGPoint(x: size.width/2, y: size.height/2)
    backdrop.name = "ScoreScreen"
    backdrop.zPosition = Layer.UIBackground.rawValue
    worldNode.addChild(backdrop)                     //add it to world

    //because I set the alpha in the SKSpriteNode,
    //I can still animate it in from alpha=0 to alpha=0.3:

    backdrop.alpha = 0
    let drop = SKAction.fadeInWithDuration(kAnimDelay)
    drop.timingMode = .EaseInEaseOut
    backdrop.runAction(SKAction.sequence([
        SKAction.waitForDuration(kAnimDelay),
        drop
        ]))
这项功能现在可以工作了,在整个游戏的游戏屏幕上显示一个透明的精灵,使场景变得单调。此外,由于项目不再需要存储整个png图像,因此效率更高


我仍然有兴趣知道为什么它不能像我最初使用的那样工作,但这是一个解决方案。

背景是sknode还是skspritenode?你试过那个节点的alpha属性了吗?它是一个
SKSpriteNode
。它对我的6+有效,所以alpha值很好。我唯一能想到的是SpriteKit在iOS 9上有一些iOS 8中没有的东西。。。但所有的图像代码都在上面。我觉得模拟器没有显示alpha…sprite kit从8到9有很多变化,很多错误都被修复了,至于模拟器,让我们面对它,它是一个模拟器,你不能100%相信它