2012-09-20 18 views
6

Vì vậy, trong Objective-C với Cocos2d, tôi sẽ sử dụng một định dạng NSMutableString để đặt một biến (điểm) vào một chuỗi. Tôi sẽ lấy chuỗi đó và sử dụng một CCLabel để đặt nó trên màn hình.Cố gắng thiết lập một CCLabelTTF với một số nguyên như là một phần của chuỗi của nó trong Cocos2d-X C++

Sử dụng Cocos2D-x, tôi đang gặp khó khăn khi tìm cách để nhận kết quả này. Một ví dụ đơn giản sẽ là tuyệt vời. Cảm ơn!

Trả lời

12
int score = 35; 
float time = 0.03; 
char* name = "Michael"; 
char text[256]; 
sprintf(text,"name is %s, time is %.2f, score is %d", name, time, score); 
CCLabelTTF* label = CCLabelTTF::labelWithString(text,"Arial",20); 
this->addChild(label); 
+0

câu trả lời và mã nguồn là rất tốt, nhưng có lẽ tôi sẽ chỉ ra cho một trong hai đi với std :: string và khả năng của nó concatenating , hoặc chạy nước rút với char * - trộn cả hai là loại lẻ (ít nhất là với tôi). –

+0

vâng đúng, tôi đã chỉnh sửa câu trả lời của mình. nhưng không sprintf chấp nhận std :: string? Tôi không thể nhớ. coz Cá nhân tôi thích sprintf hơn là sử dụng chuỗi để kết nối tất cả các số và chữ số với nhau, chỉ cần một chút phức tạp với tôi. –

+1

Bạn có thể sử dụng phương thức 'c_str()' để chuyển đổi một 'std :: string'. – alxcyl

5

Một giải pháp đơn giản hơn để đặt chuỗi tại bất kỳ thời điểm đã cho nào (from here). Đầu tiên xác định macro ở đâu đó trong mã của bạn.

#define ccsf(...) CCString::createWithFormat(__VA_ARGS__)->getCString() 

Sau đó, bạn có thể thay đổi chuỗi bất kỳ thời điểm như thế này:

m_pScoreLabel->setString(ccsf("%d pts", mCurrentScore));