2011-12-09 36 views
11

Tôi đang cố căn chỉnh dọc một số văn bản trong một TextField Monoline trong AS3. Không chắc chắn nếu điều này có thể được thực hiện với TextFormat, nhưng tôi không nghĩ như vậy.Cách căn chỉnh thẳng hàng một TextField trong AS3

Tôi đã tìm giải pháp nhưng không có gì thực sự hữu ích. Bất kỳ trợ giúp đều được chào đón.

Cảm ơn!

Trả lời

16

Bạn không thể tự động căn chỉnh văn bản dọc. Bạn cần tự mình làm.

Đây là mã làm việc của tôi:

public static function verticalAlignTextField(tf: TextField): void { 
    tf.y += Math.round((tf.height - tf.textHeight)/2); 
} 
+1

Sẽ không di chuyển y của trường văn bản cũng di chuyển văn bản? – felwithe

6

Nếu bạn có thể sử dụng một fl.text.TLFTextField thay vì một flash.text.TextField (có sẵn từ Flash Player 10+), bạn theo chiều dọc có thể tập trung các văn bản bằng cách sử dụng tài sản verticalAlign:

import flashx.textLayout.formats.VerticalAlign; 
[...] 
myTextField.verticalAlign = VerticalAlign.MIDDLE; 
1

tôi có thể đảm bảo rằng câu trả lời "walkietokyo" là câu trả lời đúng nhưng cần được sử dụng theo cách thích hợp xem tài liệu adobe "(adopts default value if undefined during cascade)" nói cách khác là một số thuộc tính của TLFTextFild m ay cascade verticalAlign properety như textFormat, do đó, hãy đặt thuộc tính verticalAlign sau mỗi thứ để xếp tầng cho những người khác, sau đó nó sẽ hoạt động. nó hoạt động với tôi :)

1

Công trình này chỉ tuyệt vời cho trường hợp văn bản nằm trong một dòng.

Trước tiên, bạn phải thêm dòng ngắt đầu tiên trong mỗi văn bản. Tôi đã làm điều đó trong một thành phần mới mở rộng TextField và ghi đè hàm "văn bản", thêm ký tự ngắt dòng ban đầu.

import flash.text.TextField; 

public class MyTextField extends TextField 
{ 
    public function MyTextField() 
    { 
     super(); 
    } 

    public override function set text(value:String):void 
    { 
     value = "\n" + value; 

     super.text = value; 
    } 
} 

Sau đó, bạn cần áp dụng định dạng cho văn bản, sử dụng thuộc tính "hàng đầu" đại diện cho lượng không gian dọc giữa các dòng.

myTextFormat = new TextFormat(); 

// This is the existent horizontal align 
myTextFormat.align = TextFormatAlign.CENTER; 

// This is my simulated vertical align. Remember that the first character 
// is always a break line. In most cases it will be a negative value... 
myTextFormat.leading = -22; 

var myTextField:MyTextField = new MyTextField(); 
myTextField.text = "Hello"; 
myTextField.setTextFormat(myTextFormat); 

Tôi hy vọng điều này sẽ giúp cho người cần căn chỉnh dọc trong văn bản dòng đơn bằng TextField. :-)

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