2015-01-05 1 views
0

block1의 위치가 특정 지점을 초과하면 block3이 발생한다는 if 문을 쓰려고합니다. 내가 >=를 사용하여 비교하려고하지만 때이 오류가 발생합니다 : "목록 유형의 인수> = 호출 할 수 없습니다 (CGPoint, CGPoint @lvalue)"여기 신속 오류 : "목록 유형 (@lvalue CGPoint, CGPoint)의 인수와 함께 =를 호출 할 수 없습니다"?

코드입니다 :

if block1.position >= CGPoint(self.size.width * 0.35,700) { 

     block3.hidden = false 
     block3.runAction(moveDownLeft) 
     } 

블록 1은이다 SKSpriteNode.

답변

1

CGPoint는 구조체입니다. 정의를보고 그것을 CMD-클릭

struct CGPoint { 
    var x: CGFloat 
    var y: CGFloat 
} 

은 하나의 요소를 비교하면됩니다.

+0

그냥 또한에 게시, 당신은 또한 당신이 일반적으로 코드에서이 비교를 확인하는 경우 CGPoints을 처리 할 수> = 연산자를 오버로드 할 수 있습니다. 자세한 정보는 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html에서 오버로드 연산자 섹션을 참조하십시오. – ad121

+0

맞습니다. 존재하지 않는 이유는 다음과 같습니다. (2 | -1) (0 | 0)보다 큼 (x는 더 큽니다. 그러나 y는 적음)? 따라서 과부하가 필요합니다. –

+0

감사합니다. 단일 요소를 비교하는 것이 트릭을 만들었습니다. – skyguy

0
// if p2 > p1 then p2 is above p1 and p2 is on the right of p1 
func >=(lhs: CGPoint, rhs: CGPoint) -> Bool { 
    return lhs.x >= rhs.x && lhs.y >= rhs.y 
} 

// if p2 < p1 then p2 is below p1 and p2 is on the left of p1 
func <=(lhs: CGPoint, rhs: CGPoint) -> Bool { 
    return lhs.x <= rhs.x && lhs.y <= rhs.y 
} 

은 또한이에 this page