2009-02-04 5 views
0

저는 cocos2d를 사용하여 iPhone 응용 프로그램을 개발하려고합니다. 고정 된 시간 간격을 호출하는 메서드를 호출하기 위해 "scheduledTimerWithTimeInterval"을 사용했습니다. 그러나 이제는 시간 간격이 점차 증가합니다. 이런 이유로 시간은 점차적으로 느립니다."scheduledTimerWithTimeInterval :"cocos2d에 문제가 있습니까?

- (void) methodTime: (id) sender{ 

    NSTimer *rat =[NSTimer scheduledTimerWithTimeInterval:(.5) target:self selector:@selector(rotation:) userInfo:nil repeats:YES]; 
} 

- (void) rotation:(NSTimer *)theTimer{ 

    NSLog(@"I m # %i", i); 
    i=i+10; // Here , i is a global int variable. 
    i=i % 1440; 
     if(i==0){ 
      [theTimer invalidate]; 

     } 
     else { 
     int rotationNum=i; 
     Sprite *sp = [Sprite spriteWithFile: @"1.png"]; 
     sp.position=cpv(220,180.5); 
     sp.rotation=rotationNum; 
     [self add:sp];  
     } 

} 

답변

0

나는이 문제가 질문을 이해했다 : 여기 내 코드입니다. 당신은 '질문'에 인용 부호 하나도 사용하지 않았습니다.

코드를 실행하는 데 0.5 초 이상 걸릴 수 있습니까? 특히 백그라운드에서 수행되는 작업의 양이 반복을 증가시키기 때문에. (더 많은 스프라이트)

예를 들어 메모리에 PNG를로드하고 파일에서 매번로드하지 않는 등이 기능을 더 빠르게 만들어보십시오. (어쨌든 메모리가 더 좋습니다.)

Btw :이 루프는 위험 할 정도로 무한 루프처럼 보입니다. (비록 작동 할 수는 있지만 ...)

0

계속 작업하면 오브젝트를 계속 회전시킬 수 있기 때문에 CATransform 및 Core Animation이 더 나은 방법 일 수 있습니다.

2

0.5 초마다 스프라이트를 일부 스프라이트 목록에 추가하는 것처럼 보입니다. 결국 목록이 매우 커지고 모든 데이터로 인해 메소드가 실행되는 데 0.5 초 이상 걸립니다. 이로 인해 타이머가 최대한 빠르게 실행됩니다. 타이머가 끝날 때까지 기다리는 시간보다 빠릅니다.

코드에 대해 알지 못해도 내 생각에 가장 좋습니다.

0

나는 Cocos2d-iphone 's를 주기적으로 사용했다.

데모 코코스 프로젝트를 살펴보면 cocos 프레임 워크에서 "해야 할 것"과 같은 것을 확인할 수 있습니다.

관련 문제