2012-11-05 13 views
0

iTouch 5에서 내 게임 (Cocos2d 1.0.1 기반, Xcode 4.5 in iOS 6.0 SDK)을 빌드하고 실행하려고하면 CCMenuItems가 정상적으로 작동하지 않습니다. 메뉴 항목이 화면 가장자리에 인접 해있을 때 가장자리 테두리가 터치 이벤트에 응답하기 위해 너무 쉽게 들리지 않는 것 같습니다 (불쌍한 표현으로 인해 유감스럽게 생각합니다).화면 가장자리 근처에 놓으면 ccmenuitem의 터치 정확도가 낮습니다.

문제를 설명하기 위해 Cocos2d 템플릿을 사용하는 Xcode 4.3 데모 응용 프로그램을 작성하고 HelloWorldLayer의 init 메소드를 수정하면 현상이 발생합니다. 코드는 다음과 같습니다.

-(void) init 
    { 
      // always call "super" init 
      // Apple recommends to re-assign "self" with the "super" return value 
      if((self=[super init])) { 

      CCLayerColor *cl = [CCLayerColor layerWithColor:ccc4(ccWHITE.r, ccWHITE.g, ccWHITE.b, 255)]; 
      [self addChild:cl]; 
        // create and initialize a Label 
        CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64]; 

        // ask director the the window size 
        CGSize size = [[CCDirector sharedDirector] winSize]; 

        // position the label on the center of the screen 
        label.position = ccp(size.width /2 , size.height/2); 

        // add the label as a child to this Layer 
        [self addChild: label]; 

        float width = 160; 

        CCSprite *sp1 = [CCSprite node]; 
        [sp1 setContentSize:CGSizeMake(width, width)]; 
        [sp1 setTextureRect:CGRectMake(0, 0, width, width)]; 
        [sp1 setColor:ccc3(0xff, 0xff, 0)]; 

        CCSprite *sp2 = [CCSprite node]; 
        [sp2 setContentSize:CGSizeMake(width, width)]; 
        [sp2 setTextureRect:CGRectMake(0, 0, width, width)]; 
        [sp2 setColor:ccc3(0, 0, 0xff)]; 

        CCMenuItemSprite *button = [CCMenuItemSprite itemFromNormalSprite:sp1 selectedSprite:sp2 target:nil selector:nil]; 
        CCMenu *menu = [CCMenu menuWithItems:button, nil]; 
        [self addChild:menu]; 
        menu.position = ccp(0, 0); 
        button.anchorPoint = ccp(1, 1); 
        button.position = ccp([[CCDirector sharedDirector] winSize].width, 
            [[CCDirector sharedDirector] winSize].height); 


      } 
      return self; 
    } 

인터넷을 통해 보니 운이 없었습니다. 누군가 나를 도와 줄 수 있는지 궁금합니다. 많은 감사!

+0

하드웨어 제한/잘못된 교정 일 수 있습니다. 확인할 모든 터치 포인트 애플리케이션에 작은 십자 표시를 할 수 있습니다. –

+0

또한 이것이 하드웨어 제한이라고 생각합니다. iOS 용 네이티브 인 모든 UIKit 응용 프로그램에서 화면 가장자리 근처에 버튼이 없는지 확인할 수 있습니다. – Morion

+0

또한 맨 위 오른쪽 구석보다 화면에 놓는 위치에 상관없이 메뉴 항목의 왼쪽 아래 모서리를 두드리는 것이 더 쉽다는 것을 알았습니다.이 말은 내 환상입니까, 진정으로 시스템은 이와 같이 작동합니까? – OriginalWood

답변

2

불과 몇 예감 : 스프라이트의 contentSizes 설정에서

  • 자제. 자동으로 설정해야하며 CCMenu에서 사용할 수 있습니다.
  • CCMenuItem의 위치 또는 고정 점을 변경하지 않았는지 확인하십시오. CCMenu의 앵커 포인트를 변경하지 마십시오. 그러면 터치 감지가 엉망이됩니다. CCMenu의 position 속성 만 사용하십시오.
  • 프로젝트의 다른 위치에있는 다른 터치 코드가 간섭하지 않고 삼키는 것으로 확인하십시오. 제스처 인식기로 인해 CCMenu가 오작동을 일으킬 수도 있습니다.

메뉴 항목을 자유롭게 배치하려면 CCMenu 노드에 각 항목을 배치해야합니다. 그런 다음 메뉴를 통해 항목을 배치 할 수 있습니다.

관련 문제