2012-04-11 33 views
8

Tôi đã đi qua tất cả các chủ đề về nhúng phông chữ trong AS3 tôi có thể tìm thấy, một thứ thử tất cả các giải pháp. Tôi có thể thiếu một cái gì đó hiển nhiên, nhưng tôi không hoàn toàn hiểu những gì tôi đang làm như vậy xin vui lòng hướng dẫn tôi đi đúng hướng. Nhiều câu trả lời liên quan đến Flash Builder hoặc công cụ khác nhưng tôi sử dụng FlashDevelop. Không có ý tưởng cho dù đó là vấn đề.Tại sao tôi không thể hiển thị các phông chữ được nhúng trong AS3?

Tôi có dòng này trong Main.as tôi:

[Embed(source = "assets/SKA_75_marul_CE_extended.ttf", 
fontName = "SKA_75_marul_CE_extended", 
fontWeight = "bold", 
advancedAntiAliasing = "true", 
mimeType = "application/x-font")] 
public static var SKA_75_marul_CE_extended:String; 

Và này tồn tại trong các nhà xây dựng của một Sprite mở rộng gọi là Pointer.as:

var format:TextFormat = new TextFormat(); 
format.font = "SKA_75_marul_CE_extended"; 
format.color = 0xFFCCCC; 
format.size = 20;   

var label:TextField = new TextField(); 
label.defaultTextFormat = format; 
label.text = "test"; 
label.embedFonts = true; 
label.antiAliasType = AntiAliasType.ADVANCED; 

//label.setTextFormat(format); --> I tried this too, didn't work... 
label.defaultTextFormat = format; 
label.x += img.width + 50; 
this.addChild(label); 

Cách duy nhất tôi đã tìm thấy để làm cho nó hiển thị bất cứ điều gì là nếu tôi tắt embedFonts. Tôi đã thử nhúng C: /windows/fonts/arial.ttf mà không thành công.

Dường như việc nhúng phông chữ là một tác phẩm tối như không có người nào khác và tôi phải thừa nhận sau 1 giờ đấu tranh. Vui lòng gửi trợ giúp.

UPDATE:

Dưới đây là đoạn code làm việc, hóa ra đó là do có đúng trật tự của hoạt động ...:

[Embed(source="assets/SKA_75_marul_CE_extended.ttf", 
       fontName = "myFont", 
       mimeType = "application/x-font", 
       fontWeight="normal", 
       fontStyle="normal", 
       unicodeRange="U+0020-U+007E", 
       advancedAntiAliasing="true", 
       embedAsCFF="false")] 
     private var myEmbeddedFont:Class; 

      var tf:TextFormat = new TextFormat("myFont", 20,0xffffff); 

      var t:TextField  = new TextField; 
      t.embedFonts  = true; // very important to set 
      t.defaultTextFormat = tf; 
      t.text    = text; 
      t.x += img.width + 50; 
      t.width = 700; 
      this.addChild(t); 
+0

Cảm ơn bạn đã trả lời của bạn. "Thứ tự chính xác của hoạt động" hóa ra là chìa khóa –

Trả lời

5

Nó dứt khoát nhất một "nghệ thuật đen tối" để có được nhúng các phông chữ để hoạt động đúng. Trước tiên tôi sẽ kiểm tra xem "SKA_75_marul_CE_extended" là tên thực tế mà phông chữ có trong siêu dữ liệu của nó (tôi đã sử dụng Vali Fusion để trích xuất tên). Tôi cũng đã thấy các phông chữ TTF mà Flash đơn giản từ chối nhúng (có lẽ siêu dữ liệu không hợp lệ làm cho hệ thống nhúng bị lỗi). Tôi sẽ tiếp tục thử nghiệm với một phông chữ làm việc được biết đến cho đến khi bạn tìm thấy vấn đề thực tế trong trường hợp nó là một vấn đề tập tin phông chữ.

Một điều tôi nhận thấy là "công khai tĩnh var SKA_75_marul_CE_extended: String;" ... không nên này thuộc loại Class?

FlashDevelop phông chữ nhúng tài liệu tham khảo từ những người có vấn đề: http://www.flashdevelop.org/community/viewtopic.php?p=28301

+0

Tôi cuối cùng đã nhận nó để làm việc, tôi chấp nhận câu trả lời của bạn và tôi sẽ đặt mã làm việc lên trong câu hỏi. – joon

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