2016-07-21 3 views
0

저는 SpriteKit을 처음 접했습니다. 제 질문은 웹 API에서 스프라이트 시트를로드하는 방법입니다.SpriteKit의 웹 API에서 스프라이트 시트를로드하는 방법

현재 API는 모든 스프라이트 시트를 포함하는 큰 PNG 이미지와 개별 프레임 정보에 대한 json을 반환합니다. (파일 및 JSON이 TexturePacker에 의해 생성 된) API는 다음과 같습니다

enter image description here

형식은 단지 하나의 큰 이미지와 PLIST (XML) 파일을 포함하는 .atlasc 폴더를 좋아한다.

이미지 및 plist 파일을 다운로드하고로드 할 디스크에 저장하려고 생각했습니다. 그러나 SKTextureAtlas.init(named: String)은 앱 번들에서만로드 할 수 있습니다.

한마디로 런타임에 웹에서 스프라이트 애니메이션을로드하려고합니다.

API를 제어 할 수 있으므로 API를 업데이트하여 목표를 달성 할 수 있습니다.

+0

확장 기능이있는 이유는 지정된 초기화로 SKTextureAtlas (사전 : 문자열 : AnyObject)를 사용하는 것입니다. – Knight0fDragon

+0

API가 개별 이미지를 반환하도록 만들고, 모두 다운로드하고 init (사전 : [String : AnyObject])를 사용하여'SKTextureAtlas'를 초기화하겠습니까? –

+0

아니요, 다른 아틀라스 (텍스처 포장 아틀라스)를 다운로드 한 다음 코드를 통해 개별 텍스처를 만들어서 내가 말한 방법으로 배치하십시오. SkTexture를 사용하면 라다 텍스처에서 텍스처를 추출 할 수 있으므로 주 이미지를 텍스처로로드 한 다음 json을 기반으로 개체를 추출합니다. – Knight0fDragon

답변

0

내가 image을 다운로드 알아 냈어요 방법, 같은 sourceTexture, 작성 : 그런 방법 init(rect rect: CGRect, inTexture texture: SKTexture)

샘플 코드를 개별 텍스처를 만들 jsonframe 정보를 사용 let sourceTexture = SKTexture(image: image)

것은 :

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) 
    }