2010-01-02 3 views
0

화면을 터치 한 위치에 따라 활의 각도를 설정하는 코드가 있습니다. 간단한 "bow.rotation = X"명령이 ccTouchesMoved 이벤트에 대해 수행됩니다. 문제는 0.9 또는 0.8.2 에 대해 cocos2d의 0.7.1에서 코드를 실행하는 동안 0.9 및 0.8.2에서 더 나은 결과를 얻었습니다. touchesmove 이벤트의 일부를 건너 뛴 것처럼 보입니다. 있다? 을 heres 코드 ... :iphone-cocos2d : 0.9 & 0.8.2가 0.7.1보다 느립니다?

-(BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView: [touch view]]; 
    location = [[CCDirector sharedDirector] convertToGL: location]; 
    if(player.state == StateNotPrepared) { 
     if(CGRectContainsPoint(spriteToRect(fireButton), location)) { 
      [player prepareShot]; 
      [powerMeter resetBar]; 
      [powerMeter startLoadingBar]; 
     } else { 
      float newAngle = [player angleByTouchPoint: location]; 
      [self setAngles: newAngle]; 
     } 
    } 
    return kEventHandled; 
} 

-(BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView: [touch view]]; 
    location = [[CCDirector sharedDirector] convertToGL: location]; 
    if(player.state == StateNotPrepared || player.state == StatePrepared) { 
     if(!CGRectContainsPoint(spriteToRect(fireButton), location)) { 
      float newAngle = [player angleByTouchPoint: location]; 
      [self setAngles: newAngle]; 
     } 
    } 
    return kEventHandled; 
} 

답변

1

이것은 상기 장치의 사용 OS 대 소장의 유형과 관련 될 수있다. 다른 감독을 찾아보고 다른 행동을하는지보십시오.

[Director setDirectorType : XXXX];

  • CCDirectorTypeNSTimer (기본값)
  • CCDirectorTypeMainLoop
  • CCDirectorTypeThreadMainLoop
  • CCDirectorTypeDisplayLink 나는 어떤 사람들이 디스플레이 링크 이사 문제를보고 한 것을 알고

: XXXX 중 하나입니다

(비록 그것이 가능하다면 일반적으로 이상적이지만).

+0

0.9에서 setDirectorType이라는 메서드를 찾을 수 없습니다. [[CCDirector sharedDirector] setDirectorType]; 그런 방법이 없습니다 –

+0

거기에 있습니다. TileMapTest.m과 같이 사용되는 것을 볼 수 있습니다 : \t [CCDirector setDirectorType : CCDirectorTypeDisplayLink]; –

+0

당신 말이 맞아요, 존재합니다. sharedDirector 인스턴스가 아닌 itlsef 클래스에서 setDirector 유형을 호출해야하며, sharedDirector로 다른 작업을 수행하기 전에이 작업을 수행해야합니다. 감사합니다. . –