후 원래 크기로 restore
세트를 복원되지 않습니다. a different thread에 설명 된 것처럼 텍스쳐 아틀라스의 이미지가 원래 노드보다 약간 크기 때문에 첫 번째 문제가 발생합니다. 이제 또 다른 문제가 발생했습니다 : SKSpriteNode.removeAllActions()
을 사용하여 애니메이션을 중단하면 노드가 원래 텍스처로 복원되지만 노드의 크기는 원본으로 복원되지 않아 아트라스의 텍스처가 더 크기 때문에 이미지가 왜곡됩니다 .SKSpriteNode - 질감 <code>true</code>에 매개 변수를 사용하여, 내가 스위프트의 <code>SKSpriteNode</code> 애니메이션 <code>SKAction.animateWithTextures</code>을 사용하고 중단 animateWithTextures
{
// ...
sprite.runAction(SKAction.animateWithTextures(textures, timePerFrame: 1, resize: true, restore: true))
NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: #selector(test), userInfo: nil, repeats: false)
// ...
}
func test() {
sprite.removeAllActions()
}
참고 :
그래서, 가정 내가 textures
라는 배열 (원래보다 약간 큰) 내 텍스처 이곳을해야 코드 조각이다이 예는 타이머가 단지를 에뮬레이트 사용 임의의 애니메이션 중단. 게임 세계에서 알 수없는 시간에 애니메이션이 완료되거나 중단 될 수 있습니다 (일반적으로 다른 스프라이트와 접촉이 발생했을 때).
실행 후 스프라이트는 원래 텍스처로 복원되지만 아틀라스의 텍스처 크기와 일치하도록 늘어납니다. 애니메이션 전에
: 나는 xScale
속성을 확인했지만, 물론 그것은 1.0
의 ... 여기에 시각적 인 결과의 애니메이션 동안
:
(SK가 중심을 유지하기 때문에 이미지가 원래 위치에서 어떻게 벗어 났는지 확인하십시오 .--)
애니메이션 후:
(지금 그녀가 보이는 지방)
나는이 길을 잘못 사용하고, 또는이 버그, 또는 그것을 해결하는 방법이 있나요?
감사합니다.
데이비드
감사합니다. 중요한 것은 애니메이션이 중단 될 때 미리 알 수 없다는 것입니다.'animateWithTextures' 액션이 수행되는 동안 "무작위로"발생할 수있는 이벤트이기 때문에 시간을 할애 할 수 없습니다. 내가 성취하기를 바라는 것은, 아무 일도 일어나지 않으면 액션이 완전히 수행되지만, 스프 라이트는 인터럽트되면 원래 상태 (원래 텍스처 + 크기)로 되돌아갑니다. 다시 말하지만 원래 텍스처가 복원되었지만 크기 나 종류가 아닌 버그가 나에게 보이거나 일부 매개 변수가 올바르게 설정되지 않았습니다. – David
당신의 버그를 이해하기는 어렵지 만 완료 블록을 가진 runaction에서 강제로 할 수 있으며 애니메이션이 끝나면 텍스처와 크기를 설정하십시오 –