2017-05-03 6 views
1

나는 30 프레임의 스프라이트 애니메이션을 가지고 있는데,이 프레임 중 6 개는 키 프레임이고 나머지는 키 프레임에서 키 프레임으로의 전환입니다. Spritekit의 특정 프레임에서 /로 스프라이트 애니메이션 시작/중지

나는 다음을 수행하는 방법을 알아 내려고 노력하고 있어요 :

버튼 스프라이트를 누르면
  • 애니메이션이 시작됩니다. 애니메이션은 적어도 한 번 이상 실행 된 다음 무작위로 선택된 키 프레임에서 애니메이션을 중지합니다.

  • 버튼을 다시 누르면 애니메이션이 마지막으로 선택한 키 프레임부터 시작하여 1 완료주기를 실행 한 다음 임의로 선택한 키 프레임에서 다시 정지합니다.

나는 비슷한 질문 here를 발견했습니다하지만 스위프트와 Spritekit가 가능하게 3 년 정도 바꿨나요 2014 년 질문을 받았다?

편집 : 나는 시도했다 @Alessandro Ornano 이 :

var roll1Textures = ["Roll1Motion0", "Roll1Motion1", "Roll1Motion2", "Roll1Motion3", "Roll1Motion4", "Roll1Motion5", "Roll1Motion6", "Roll1Motion7", "Roll1Motion8", "Roll1Motion9", "Roll1Motion10", "Roll1Motion11", "Roll1Motion12", "Roll1Motion13", "Roll1Motion14", "Roll1Motion15", "Roll1Motion16", "Roll1Motion17", "Roll1Motion18", "Roll1Motion19", "Roll1Motion20", "Roll1Motion21", "Roll1Motion22", "Roll1Motion23", "Roll1Motion24", "Roll1Motion25", "Roll1Motion26", "Roll1Motion27", "Roll1Motion28", "Roll1Motion29"] 

let roll1Animation = SKAction.animate(with: Array(roll1Textures[0...5]), timePerFrame: 0.06, resize:false, restore:false) 

하지만 오류 메시지 : 속성 initialiser 내에서 인스턴스 멤버 'roll1Textures'을 사용할 수 없습니다; 'self'가 사용 가능하기 전에 실행되는 속성 이니셜 라이저

어떻게 코드를 잘못 구현 했습니까?

+0

내가 아는 바로는 SpriteKit의 특정 문제에 대해서는 아무 것도 변경되지 않았습니다. – Whirlwind

+0

나는 여러 가지 상태를 처리하기 위해 customAction을 생성한다고 말할 것이다. – Knight0fDragon

답변

1

이 게임에 유용 할 수 있지만, 지금 스위프트에 당신은 또한 한 줄에 할 수 있을지 모르겠어요 : 즉

let animation = SKAction.animate(with: Array(textures[0...5]), timePerFrame: 0.06, resize:false, restore:false) 

당신이 특정 범위로 구성 배열 슬라이스를 만들 수 있습니다 Array

+0

내 질문은 오랫동안 코멘트로 게시하는 것이었다. 내 질문에 "편집"을 참조하십시오. – Delah

+0

SKTexture의 배열을 만들어야합니다. 문자열 배열이 아닙니다. –