2011-10-31 14 views
5

Tôi đang cố gắng tìm ra lý do tại sao một số chữ cái (như một người Na Uy (Å)) đang cutted ra ở giữa đỉnh "o" TextField:AS3 thiết lập lề trên của văn bản bởi vì một số ký tự được cutted ra

mã của tôi là thế này:

 var titleFormat:TextFormat = new TextFormat(); 
     titleFormat.size = textSize; 
      // this is embedded font, and exported for action script, declared 
     titleFormat.font = myFontBold.fontName; 
     titleFormat.bold = true; 
     titleFormat.color = parseInt("0x"+fontColor,16); 

     var titleText:TextField = new TextField(); 
     titleText.defaultTextFormat = titleFormat; 
     titleText.embedFonts = true;    
     titleText.antiAliasType = AntiAliasType.ADVANCED; 
     titleText.text = "Å"+text; 
     addChild(titleText); 

     titleText.selectable = false;   
     titleText.wordWrap = true;   
     titleText.width = maskImg.width - 80;   
      // this should autosize to fit all text, but it doesn't the top of text 
     titleText.autoSize = TextFieldAutoSize.LEFT; 
     titleText.x = x; 
     titleText.y = y; 

vì vậy, tôi đã cố gắng điều khác nhau như thiết lập chiều cao hardcoded và lớn hơn văn bản, nhưng đầu chúng tôi cutted một lần nữa, tôi đã thử với css nhưng không thành công. Bất cứ ai có ý tưởng tại sao bức thư không thấy đầy đủ và lý do tại sao nếu tôi phóng to swf (2-3 ins zoom) nó xuất hiện bình thường (và những gì tôi cố gắng để đạt được) như thế này:

tôi nghĩ rằng nó đã làm với topMargin, nhưng tiếc là tôi đã không tìm thấy một cái gì đó như thế trong tài liệu as3.

+0

Trong kiểu Flex có 'paddingTop', nhưng bạn có TextField thuần túy. Đây có thể là văn bản đo lỗi - thư đi ra khỏi hộp. Bạn có thể cố gắng hiển thị văn bản thành bitmap và hiển thị bitmap (nó có thể được cắt quá, nhưng có thể có sự kết hợp kích thước ma trận/kích thước phông chữ tránh nó.) – alxx

+0

Vâng, tôi đã thử điều đó, nhưng như bạn đã nói nó quá lưu trữ bitmap không có trên cùng. Tôi nghĩ rằng đây có thể là lỗi cần được khắc phục trong một số phiên bản flash trong tương lai hoặc thêm một lề mới (hiện tại chỉ còn lạiMargin và rightMargin của nó, có thể điều này cần topMargin và bottomMargin, để chúng tôi có thể khắc phục những điều này bằng cách đặt văn bản bên trong hơn) – Daniel

Trả lời

1

Không chắc chắn nếu điều này có ích, nhưng tôi đã thử nghiệm mã hoàn chỉnh, tự chứa sau đây với phông chữ Verdana, không được nhúng và nó hoạt động tốt. Có lẽ phông chữ bạn đang nhúng có vấn đề chính nó hoặc việc nhúng đang gây ra sự cố vì một số lý do?

package { 

    import flash.display.MovieClip; 
    import flash.text.*; 

    public class TestText extends MovieClip { 

     public function TestText() { 

      var textSize = 20; 

      var titleFormat:TextFormat = new TextFormat(); 
      titleFormat.size = textSize; 
      titleFormat.font = "Verdana"; 
      titleFormat.color = 0xFF0000; 

      var titleText:TextField = new TextField(); 
      titleText.defaultTextFormat = titleFormat;   
      titleText.text = "Åbcdefg"; 
      titleText.backgroundColor = 0x000000; 
      titleText.background = true; 
      addChild(titleText); 

      titleText.autoSize = TextFieldAutoSize.LEFT; 
      titleText.selectable = false;   
      titleText.wordWrap = true;   
      titleText.width = 200;  

     } 
    } 
} 
+0

Thay đổi nó thành Verdana đã hoạt động, do đó, nó có thể là phông chữ như bạn đã đề xuất. Nhưng sau đó, tôi nhận thấy khi không sử dụng nhúng, "o" là không thể nhìn thấy ở tất cả trên phông chữ đó, và nhúng nó nó cho thấy nó trong một nửa (xem hình ảnh đầu tiên). Vì vậy, tôi nghĩ rằng phông chữ là nguyên nhân cho việc này, nhưng flash phải có cách xử lý các loại phông chữ này hoặc ít nhất là cách khắc phục bằng topMargin và bottomMargin. – Daniel