作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 SpriteKit 的新手,我的问题是如何从 Web API 加载 Sprite 表。
目前,我有一个 API 返回一个大的 PNG 图像,其中包含所有 Sprite 表,以及一个关于单个帧信息的 json。 (文件和 json 由 TexturePacker 生成)API 如下所示:
格式就像一个 .atlasc
文件夹,其中包含一个大图像和一个 plist (XML) 文件。
我正在考虑下载图像和plist文件并将其保存在磁盘中以便加载。但是,SKTextureAtlas.init(named: String)
只能从应用程序包中加载。
简而言之,我想在运行时从网络加载 Sprite 动画。
我可以控制 API,因此我可以更新 API 来实现我的目标。
最佳答案
我想到的方法是下载image
,创建一个sourceTexture
,比如:let sourceTexture = SKTexture(image: image)
然后使用 json
中的 frame
信息通过 init(rect rect: CGRect, inTexture texture: SKTexture) 方法创建单独的纹理
示例代码是:
var textures: [SKTexture] = []
let sourceTexture = SKTexture(image: image)
for frame in spriteSheet.frames {
let rect = CGRect(
x: frame.frame.origin.x / spriteSheet.size.width,
y: 1.0 - (frame.frame.size.height / spriteSheet.size.height) - (frame.frame.origin.y / spriteSheet.size.height),
width: frame.frame.size.width / spriteSheet.size.width,
height: frame.frame.size.height / spriteSheet.size.height
)
let texture = SKTexture(rect: rect, inTexture: sourceTexture)
textures.append(texture)
}
关于ios - 如何在 SpriteKit 中从 Web API 加载 Sprite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510209/
我是一名优秀的程序员,十分优秀!