2008-12-03 31 views
9

Tôi đang tìm cách hiển thị liên tục điểm số trò chơi trong ứng dụng iPhone bằng cocos2d. Đi ra khỏi mã mà Cocos2d cho thấy FPS ứng dụng đang chạy tại địa chỉ:Cách tốt nhất để hiển thị điểm số trò chơi trên iPhone bằng cocos2d?

-(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]; 
} 

tôi có thể nhận được số điểm để hiển thị đúng, nhưng nó thấp thoáng, mặc dù các ứng dụng đang chạy ở nhanh hơn 60 FPS ... Bất kỳ ý tưởng?

+0

Một điều về mã này mà bạn đã hiển thị, đừng nhắn tin cho FPSLabel bằng cách vẽ. Thay vào đó, hãy sử dụng [FPSLabel setNeedsDisplay: YES] sau khi bạn cập nhật nó. Điều này sẽ hủy nhấp nháy của bạn. –

Trả lời

5

Hãy thử sử dụng LabelAtlas thay thế. Nó nhanh hơn (tiêu thụ ít CPU hơn nhiều). Xem AtlasDemo đi kèm với bản phân phối cocos2d để xem cách sử dụng nó.

9

Đối với bất cứ ai có thể quan tâm, tôi đã kết thúc bằng một Label cocos2d như vậy:

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]; 

Hy vọng rằng điều này có thể giúp người khác.

+2

Kể từ Cocos2d 0.8, bạn nên sử dụng một BitmapFontAtlas, vì nó là cách nhanh hơn cho một cái gì đó được cập nhật thường xuyên trên màn hình. –

Các vấn đề liên quan