스위프트의 # 선택자 패러다임을 처음 사용했습니다. 궁극적으로 나는 spaceShip의 SKSpriteNode를 CGMutablePath 위로 이동시키고 spaceShip이 이동 한 경로에서 SKEmitterNodes로 배기 가스를 추가하려고합니다.이상한 스위프트의 선택기 동작. #selector를 통해 완전히 다른 매개 변수 값
그러나 저는 # 선택자 패러다임에 머물러 있습니다. 나는 addFumeToPosition(_ point: CGPoint)
함수에 타이머를 통해 SpaceShipSprite의 위치를 보내려고하므로 나중에 그 위치에 SKEmitternode를 추가 할 수 있습니다.
#selector를 이해할 수없는 몇 가지 이유로 변수에 넣는 것과 완전히 다른 것을 보냅니다. 아래의 지문을 참조하십시오. 무슨 일 이니?
let spaceShipSprite = SKSpriteNode(texture: SKTexture(image: #imageLiteral(resourceName: "spaceShip")))
spaceShipSprite.position = CGPoint(x: 142.0, y:160.0)
spaceShipSprite.name = "spaceShip"
self.addChild(spaceShipSprite)
print("spaceShipSprite.position before timer point x:\(spaceShipSprite.position.x) y:\(spaceShipSprite.position.y)")
let gameTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector:#selector(addFumeToPosition(_:)), userInfo: spaceShipSprite.position, repeats: true)
print("spaceShipSprite.position before timer point x:\(spaceShipSprite.position.x) y:\(spaceShipSprite.position.y)")
... 타이머 점 X 전에
func addFumeToPosition(_ point: CGPoint){
print("spaceShipSprite.position during point x:\(point.x) y:\(point.y)")
}
spaceShipSprite.position : 142.0 Y : 160.0
spaceShipSprite.position 타이머 점 X 후 : 142.0 Y : 160.0
spaceShipSprite . 타이머 포인트 x 동안의 위치 : 196092657881833.0 y : 1000000000.0
당신은이 두 형태가 '타이머'의 타겟/행동에 한정되어 있음을 분명히해야합니다. – rmaddy