2015-01-29 4 views
2

예를 들어 SKSpriteNode를 만들려고하는데 10 초 밖에 걸리지 않습니다. 노드에 대해 "bornTime"이라는 사용자 정의 속성을 만들려고합니다. 따라서 currentTime - bornTime > 10 인 경우 update()에서 노드가 제거됩니다.SKSpriteNode에 대한 사용자 지정 속성을 만드는 방법은 무엇입니까?

+3

사용자 정의 속성을 저장하기 위해 nsmutabledictionary를 userData에 지정할 수있다. 그런 식으로 노드를 서브 클래스화할 필요가 없습니다 – LearnCocos2D

+0

@ LearnCocos2D 고마워요! 그것은 좋은 해결책입니다! – Antimony

답변

3

SKSpriteNode를 사용자 정의 객체로 서브 클래 싱해야합니다. 여기에서 원하는 속성을 설정할 수 있습니다.

import UIKit 
import SpriteKit 

class mySpriteNode: SKSpriteNode { 

    let bornTime = NSDate() 
} 

그런 다음 해당 날짜를 현재 날짜와 비교하여 차이점을 확인할 수 있습니다.

+0

고마워요! SKSpriteNode에 대한 긴장감을 생각하고있었습니다. 귀하의 솔루션은 훨씬 더 쉽고 간단합니다! – Antimony

+0

NSDate를 CACurrentMediaTime으로 변경합니다. currentTime CFTimeInterval, 당신은 쉽게 NSDate (내가 아는 한) 사이의 비교를 할 수 없습니다 .. CFTimeInterval 또한 사용하는 CACurrentMediaTime – hamobi

+0

@hamobi 동의합니다. 절대 시간 법을 찾고 있었지만 정확하게 기억하지 못합니다. 1970 년 이래로 시간 간격이 초 단위로 표시되기 때문에 내가 잘못하지 않으면 변환이 필요하지 않습니다. – Tokuriku

2

부모 노드에서 자신을 제거 할 노드에 지연이있는 SKAction를 추가하는 것이 작업을 수행하는 다른 방법 :이 방법은 사용자가 점검 할 필요 없다 또는 장점이있다

 mynode.run(SKAction.sequence([ 
      SKAction.wait(forDuration: 10), 
      SKAction.run { 
       mynode.removeFromParent() 
      } 
     ])) 

심지어 시간에 대해 신경 쓰지 않아도된다.