从 UIImage 设置 SKSpriteNode
Posted
技术标签:
【中文标题】从 UIImage 设置 SKSpriteNode【英文标题】:Setting SKSpriteNode from UIImage 【发布时间】:2015-06-04 21:40:49 【问题描述】:我在 时遇到问题。我在 UIImage 上使用桥接器,将图像转换为 SKTexture,然后使用该 SKTexture 创建一个新的 SKSpriteNode,但我的代码不断崩溃,并出现以下警报“线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)”
CGImageRef textureImage = (__bridge CGImageRef)(theUIImage);
SKTexture *heroTexture = [SKTexture textureWithCGImage:textureImage];
SKSpriteNode *hero = [SKSpriteNode spriteNodeWithTexture:heroTexture size:CGSizeMake(64, 64)];
【问题讨论】:
【参考方案1】:而不是将 UIImage 桥接到 CGImageRef,您应该使用:
CGImageRef textureImage = [theUIImage CGImage];
如果你的图像不是 nil,它应该可以工作。
另外,你可以试试:
SKTexture *heroTexture = [SKTexture textureWithImage:theUIImage];
一个小提示;始终检查“nullity”。
【讨论】:
我已经尝试过使用和不使用网桥,但我的线程仍然崩溃!我还进行了测试以确保图像不为零(我在图像中添加了一个 UIImageView 集以进行测试)。当我使用本地图像进行实例化时,代码工作正常: SKSpriteNode *hero= [SKSpriteNode spriteNodeWithImageNamed:@"hero.png" normalMapped:YES]; 那么,“theUIImage”的来源是什么? 我正在使用相机拍照并将其设置为 UIImage 我认为这可能与图像有关。您还应该检查 CGImageRef 是否为 0。【参考方案2】:尝试使用图像创建纹理:[SKTexture textureWithImageNamed:...]
,然后使用它创建 Sprite:[SKSprite spriteWithTexture:....]
。 (可能是 SpriteFromTexture)
【讨论】:
以上是关于从 UIImage 设置 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章
如何将SKSpriteNode作为PNG图像保存到相机胶卷?
我的 SKTexture 尺寸不适合我的 SKSpriteNode