2012-03-12 29 views
14

Tôi đang sử dụng BitmapFonts, LabelStyles và Nhãn cho văn bản của mình.Sử dụng cùng một phông chữ với các kích thước khác nhau trong libgdx

Tôi muốn thay đổi kích thước một số nhãn, vì vậy tôi sử dụng này:

fontType.scale(-.6f); 

LabelStyle style = new LabelStyle(fontType, Color.WHITE); 

titleLabel = new Label("Points", style); 
titleLabel.setColor(Color.RED); 
titleLabel.x = 260; 
titleLabel.y = 310; 

Nhưng khi tôi muốn thay đổi kích thước nhãn khác, tất cả các nhãn có chứa phông chữ thay đổi kích thước (Tôi tạo ra một LabelStyle mới). Vì vậy, tôi thay đổi kích thước nhãn thay vì phông chữ, nhưng điều đó không giải quyết được vấn đề, bởi vì nó không thay đổi kích thước nhãn, bất kỳ ý tưởng?

Trả lời

14

Bạn sẽ phải tạo BitmapFonts và LabelStyle riêng biệt cho mỗi Nhãn (hoặc nhóm Nhãn) nếu bạn muốn chia tỷ lệ chúng một cách độc lập.

Từ việc kiểm tra mã nguồn libgdx, Label sử dụng tham chiếu đến BitmapFont từ LabelStyle và chuyển nó tới một số BitmapFontCache được sử dụng trong nội bộ; không có bản sao sâu được thực hiện tại bất kỳ điểm nào để tất cả chúng đều sử dụng cùng một BitmapFont mà bạn đã tạo ra LabelStyle.

+0

Tôi nghĩ rằng đó sẽ là lựa chọn tốt nhất:/mặc dù nó tiêu tốn rất nhiều thời gian tạo ra các bitmapfonts u.u cảm ơn :) –

+0

một sự xấu hổ mà label.setScale() là vô ích. Tôi cũng nghĩ rằng đây là giải pháp tốt nhất, mặc dù nó là xấu xí. Cám ơn vì đã chia sẻ. – Don

13

Tôi đang sử dụng libgdx 0.9.8 (vì đây là một câu hỏi cũ), và khi tôi tạo ra một nhãn hiệu như vậy:

lblA = new Label("A", skinA); 

tôi có thể thay đổi kích thước phông chữ chỉ nhãn với:

lblA.setFontScale(3); 

Điều này không ảnh hưởng đến các nhãn khác mà tôi có được tạo theo cùng một cách. Tôi đã thiết lập một số nhãn của tôi để quy mô phông chữ (2), và đó là OK (không bị ảnh hưởng bởi (3)). Tuy nhiên, tôi thấy rằng phong cách nhãn của tôi không phải là 'độc lập'. Họ cần phải có LabelStyle riêng của họ được giao, nếu không bạn sẽ có được hành vi mà bạn đang nói.

+0

Kể từ libGDX 1.5.6 (nếu không phải trước đó), sử dụng 'setFontScale (float)' tác động các nhãn riêng lẻ, ngay cả khi chúng chia sẻ cùng một 'LabelStyle'. –

+0

@JamesSkemp Có thứ gì giống như một thiết lập toàn cầu để mở rộng mọi thứ không? Mọi thứ được vẽ quá nhỏ trên điện thoại (mật độ điểm ảnh nhiều hơn) nhưng điều đó cũng có nghĩa là tôi có thể lấy đi bằng cách vẽ phông chữ 2 hoặc thậm chí lớn gấp 3 lần và tiết kiệm không gian kết cấu. – Madmenyo

+0

Câu hỏi hay @MennoGouw - Tôi e rằng tôi không chắc chắn: (Nếu là tôi, tôi nghĩ tôi sẽ tạo ra một số chức năng toàn cầu hoặc 'LabelStyle'. –

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