2015-02-05 5 views
0

다른 함수 (충돌)에서 함수 (안녕하세요)에서 만든 태양 객체를 어떻게 호출 할 수 있습니까? sun 변수가 hello 함수 지역이며, 그 범위 밖에 존재하지 않는 -함수의 변수를 어떻게 참조합니까?

func collide() { 
     if (CGRectIntersectsRect(player.frame, **sun.frame**)) { 
      [EndGame]; 
     } 

func hello() { 
     let sun = SKSpriteNode(imageNamed: "Sun") 
} 
+0

'sun' 변수가'hello()'함수의 범위 내에 만 있기 때문에 당신은 할 수 없습니다. 'sun' 변수를 클래스 변수로 만들고 싶을 수도 있습니다 – rckoenes

+0

태양을 클래스 변수로 만드십시오 –

+0

태양의 스프라이트를'hello'에서 _return_ 했습니까? –

답변

4

당신은 할 수 없습니다.

func collide(sun: SKSpriteNode) { 
    if (CGRectIntersectsRect(player.frame, sun.frame)) { 
     [EndGame]; 
    } 
} 

func hello() { 
    let sun = SKSpriteNode(imageNamed: "Sun") 
    ... 
    collide(sun) 
} 

그렇지 않으면 내가 생각하는이 클래스의 인스턴스 메소드는, 경우, 단지 인스턴스로 sun 변수를 설정 : collidehello에서 호출

경우, 당신은 단지 인수로 전달할 수 속성 :

class Test { 
    private var sun: SKSpriteNode? 

    func collide(sun: SKSpriteNode) { 
     if let sun = self.sun { 
      if (CGRectIntersectsRect(player.frame, sun.frame)) { 
       [EndGame]; 
      } 
     } 
    } 

    func hello() { 
     self.sun = SKSpriteNode(imageNamed: "Sun") 
    } 
} 
1

안토니오의 대답 외에도 고유 한 이름을 사용하여 SKNode's children을 검색 할 수 있습니다.

예를 들면.

let sun = SKSpriteNode(imageNamed:"Sun") 
sun.name = "sun" 
self.addChild(sun) 

당신은

if let sun = self.childNodeWithName("sun") 
{ 
    //use sun here 
} 

childNodeWithName는 옵션 SKNode?를 반환

하여 다시 얻을 수 있습니다.

관련 문제