2008-12-03 6 views
9

Ich bin auf der Suche nach einer Spielpunktzahl in einer iPhone App mit cocos2d anzeigen. Möchten Sie den Code aus, der an die FPS die App läuft cocos2d zeigt:Die beste Methode, um einen Spielstand auf dem iPhone mit cocos2d anzuzeigen?

-(void) showFPS 
{ 
    frames++; 
    accumDt += dt; 

    if (accumDt > 0.1) { 
     frameRate = frames/accumDt; 
     frames = 0; 
     accumDt = 0; 
    } 

    NSString *str = [NSString stringWithFormat:@"%.1f",frameRate]; 
    [FPSLabel setString:str]; 
    [FPSLabel draw]; 
} 

ich die Partitur korrekt angezeigt bekommen, aber es flackert, auch wenn die App bei schneller als 60 FPS läuft ... Alle Ideen?

+0

Eine Sache über diesen Code, die Sie zeigten, keine Nachricht FPSLabel mit zeichnen. Verwenden Sie stattdessen [FPSLabel setNeedsDisplay: YES], nachdem Sie es aktualisiert haben. Dies sollte Ihr Flimmern aufheben. –

Antwort

5

Versuchen Sie stattdessen, LabelAtlas zu verwenden. Es ist schneller (es verbraucht viel weniger CPU). Sehen Sie sich den AtlasDemo an, der mit der cocos2d-Distribution geliefert wird, um zu sehen, wie Sie ihn verwenden können.

9

Für jeden, der interessiert sein könnte, kam ich, um eine cocos2d Etikett mit bis:

scoreLabel = [Label labelWithString: [NSString stringWithFormat:@"%d", score] dimensions: CGSizeMake(180, 20) alignment: UITextAlignmentRight fontName:@"Arial" fontSize: 20]; 
[scoreLabel setPosition: cpv(100,100)]; 
[self add: scoreLabel]; 

Hoffentlich jemand anderes helfen kann.

+2

Ab Cocos2d 0.8 sollten Sie ein BitmapFontAtlas verwenden, da es für etwas, das häufig auf dem Bildschirm aktualisiert wird, viel schneller ist. –