Dev/iOS-cocos2d2011. 7. 12. 14:12

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint

worldPoint(전체 화면상의 좌표) 값을 특정노드(스프라이트, 레이어 포함) 기준의 좌표값으로 변경


- (CGPoint)convertToWorldSpace:(CGPoint)nodePoint

특정노드(스프라이트, 레이어 포함)에서의 좌표값을 worldPoint(전체 화면상의 좌표) 기준의 좌표값으로 변경


Posted by 놀란

댓글을 달아 주세요

  1. 비밀댓글입니다

    2011.08.15 15:20 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요.

      몸 sprite 위에 얼굴 등의 sprite를 addchild 했으면, 이미 상대적인 좌표로 들어가게 되겠네요.

      - (CGPoint)convertToWorldSpace:(CGPoint)nodePoint

      이용하시면 되겠지요?

      터치 좌표는 월드 좌표인데, 몸 sprite 기준으로 상대적인 좌표값(머리 등)이 나오니 엉뚱한 터치 영역을 체크하고 있겠네요.

      [self convertToWorldSpace: 머리 sprite] 이런 식으로 레이어에서의 월드좌표 값을 가져오고 그 좌표값이 터치부분에 들어가있는지 보면 될 것 같습니다.

      그리고 다른 방법으로는 몸에 addchild 할때 터치영역을 만들어주는건 어떨까요?
      몸 sprite rect에 머리 붙일때의 최대값(최대값 가져오는건 제 포스팅에 있습니다.) 가져와서 x, y 값을 늘려주고 팔 붙이면서 오른쪽 x 값 늘려주고 해서 최종 rect 값을 터치영역으로 해서 CGRectContainsPoint 메소드로 체크해도 될 듯 싶습니다.

      저도 할때마다 헷갈려요.. ^^;;
      맞는 답변이길...

      2011.08.22 11:18 신고 [ ADDR : EDIT/ DEL ]
  2. 터치하는 좌표와 맵 이동시에 나오는 좌표가 계속 틀려서 고민하고 있었는데 덕분에 해결했습니다. 감사합니다. ^^

    2012.09.26 04:04 신고 [ ADDR : EDIT/ DEL : REPLY ]

Dev/iOS2011. 6. 2. 22:17

문자열을 식별자를 이용하여 배열로 나누기

componentsSeparatedByString 메소드

NSString *string = @"one:two:three:four";

NSArray *chunks = [string componetsSeparatedByString: @":"];


반대로 배열의 객체를 합쳐 하나의 문자열로 만들기

componentsJoinedByString 메소드 사용

string = [chunks componentsJoinedByString: @"-"];

결과 @"one-two-three-four"



출처 : Objective-C 2.0 (이종웅 저)

Posted by 놀란

댓글을 달아 주세요

Dev/iOS2011. 6. 2. 21:56

arrayWithObject : 클래스 메소드를 사용해서 새 NSArray 를 만들 수 있다. 배열의 목록을 콤마로 구분해서 인수를 주고 목록의 끝에 배열의 끝임을 알리는 nil 을 넣는다. 이것이 배열의 중간에 nil 을 저장할 수 없는 이유 중의 하나이다.

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];




배열을 만들고 나면 다음과 같이 배열이 담고 있는 객체의 개수를 얻을 수 있다.

- (unsigned) count;

ex) [array count];




다음과 같이 특정 인덱스의 객체를 가져올 수 있다.

- (id) objectAtIndex: (unsigned int) index;

ex) [array objectAtIndex: 1];




다음 코드는 위의 메소드를 이용해서 작성하였다.


int i;

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];

for (i = 0; i < [array count]; i++) {

    NSLog(@"index %d has %@.", i, [array objectAtIndex: i] );

}



출처 : Objective-C 2.0 (이종웅 저)

Posted by 놀란

댓글을 달아 주세요