2013-07-11 4 views
1
을 감지하지

내가 사용할 때마다적인 Cocos2D 자동 @ 배 망막 스프라이트 이미지

sprite = [CCSprite spriteWithFile:@"image.png"]; 
적인 Cocos2D는 항상 망막 비 망막 장치 "의 image.png"와 " [email protected]"을 찾아 충분히 지적하고있다

장치. === 및적인 Cocos2D에만있는 파일을 찾고있다 - 나는 동적으로

int random = arc4random() % 2; 

    switch (random) { 
     case 0: 
      color = @"blue"; 
      break; 
     case 1: 
      color = @"green"; 
      break; 
     default: 
      break; 
    } 

    filename = [[NSString alloc] initWithString:color]; 
    filename = [filename stringByAppendingString:@"Square.png"]; 

    // Sprite should now be either "greenSquare.png" or "blueSquare.png" 
    sprite = [CCSprite spriteWithFile:filename]; 

갑자기 즉, 스프라이트 파일 이름 문자열을 구축하려고 할 때마다

는하지만, 내 @ 2 배 파일은 완전히 무시되고있다 "greenSquare.png"즉 "[email protected]"는 절대 선택되지 않으며, "greenSquare.png"가 존재하지 않으면 (당시에 만 망막 디스플레이로 테스트 했음) 전체 앱이 충돌합니다.

왜 이런 일이 벌어지고 있으며 어떻게 해결할 수 있습니까?

(수동으로 장치 망막 상태를 확인한 다음 수동으로 @ 2x를 추가하지 않아도 됨 - 가능한 해결책이 맞다는 것을 알기 때문에 이상적입니다.)

감사합니다.

답변

6

cocos2d는 @ 2x 명명 체계를 사용하지 않습니다. 대신 아이폰 망막 이미지에 접미어 -hd, ipad 이미지에 -ipad, ipad 망막 이미지 용 -ipadhd를 사용합니다.

예 : "Square.png"와 "광장 - hd.png"

또한 대체 접미사를 사용할 수 있습니다. 하나가 발견 될 때까지 때 그것은 다음과 같은 순서로 다음 기호를 검색하려고합니다 활성화 :

아이 패드 HD에
  • : 아이 패드 HD, 아이 패드, 아이폰 HD, 자원 해상도
  • 없이 아이 패드에 : 아이 패드, 아이폰 HD, 자원 해상도
  • 아이폰 HD에
  • 없이 : Mac의 해상도
  • 없이 맥 HD, 맥, 자료 : 맥 HD 해상도
  • 없이 아이폰 HD, 자원 해상도없이 맥, 자원
(CCFileUtils.h 파일에 설명 된대로)

+1

가 완벽하게 작동 교체입니다! 왜 원래 테스트 코드 즉 sprite = [CCSprite spriteWithFile : @ "image.png"]; image.png와 [email protected]가 자동으로 감지되었습니다. – Salman

1

망막 이미지에 대한 표준적인 Cocos2D는 sufix이 -hd 당신의 이미지는 "greenSquare.png", greenSquare-hd.png "라는 이름의 필요적인 Cocos2D의 망막라는 이름의 경우 "하지만 당신은 sufix의 @의 2 배를 사용하여이 표준을 변경하고적인 Cocos2D를 알 수 있습니다, 당신은 AppDelegate.m를 수정하면

라인

CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; 
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; 

를 검색하고 sufix을 변경하는 것이 할 수 @"- HD "를 @로 "@ 2x"이므로 코드는 다음과 같습니다.

[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"@2x"]; 

가장 좋은 방법은 모든 이미지의 이름을 변경하려면 "@ 2 배" "-hd"에

+0

@ 2x는 내 cocos2d 2.x 프로젝트에서 작동합니다. 왜? – ZYiOS