0
popover에 UIActionSheet를 표시해야하며이 팝 오버에는 Cocos2D의 요소를 가리키는 화살표가 있습니다.Cocos2D 2.0 - boundingBox 좌표를 디렉터 뷰 공간으로 변환
이 요소의 boundingBox rect를 UIActionSheet가 표시 될 디렉터 뷰 좌표로 계산해야하므로 작업 시트 화살표가이를 가리키고 있습니다.
어떻게하면됩니까?
popover에 UIActionSheet를 표시해야하며이 팝 오버에는 Cocos2D의 요소를 가리키는 화살표가 있습니다.Cocos2D 2.0 - boundingBox 좌표를 디렉터 뷰 공간으로 변환
이 요소의 boundingBox rect를 UIActionSheet가 표시 될 디렉터 뷰 좌표로 계산해야하므로 작업 시트 화살표가이를 가리키고 있습니다.
어떻게하면됩니까?
작성한 빠른 샘플입니다. UIPopoverController를 UIActionSheet로 변경하십시오.
CCNode* node = (CCNode *)sender;
CGPoint worldPoint = [node convertToWorldSpace:CGPointZero];
CGRect rect = [sender boundingBox];
rect.origin = worldPoint;
// Convert position based on Apple's anchor point from cocos2d's anchor point
rect.origin.y = rect.origin.y + rect.size.height;
CGPoint convertedLocation = [[CCDirector sharedDirector] convertToUI:ccp(rect.origin.x, rect.origin.y)];
rect.origin = convertedLocation;
UIViewController* viewController= [[UIViewController alloc] init];
[[viewController view] setBackgroundColor:[UIColor greenColor]];
UIPopoverController* c = [[UIPopoverController alloc] initWithContentViewController:viewController];
[c presentPopoverFromRect:rect inView:[[CCDirector sharedDirector] view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
아니요. 이것은 나에게 올바른 좌표를주지 않는다. X는 다소 옳은 것처럼 보이지만 Y는 완전히 잘못되었습니다. – SpaceDog
참고 :이 스프라이트는 레이어 내부에있는 다른 스프라이트 내부에 있습니다 ... 다른 점이 있습니까? – SpaceDog
예, 경계 상자가 다른 좌표를 반환합니다. 스프라이트에서이 레이어를 주 레이어에서 사용하십시오. 그것이 맞는지 보자. –