2009-10-31 36 views
6

Nút Flex chuẩn không cho phép gói văn bản nhãn thành từ. Tôi đọc trên internet rằng có một số cách không có giấy tờ để xử lý việc này nhưng tôi không yêu cầu họ làm việc. Nếu ai đó có thể gửi cho tôi một ví dụ nhỏ sẽ là tuyệt vời!Adobe Flex: Nhãn gói trong nhãn nút

+0

Bạn có thể tiếp tục và chấp nhận câu trả lời của Christian Nunciato. – Panzercrisis

Trả lời

15

Về cơ bản, bạn cần thiết lập một số thuộc tính được bảo vệ trên điều khiển TextField của nút (multiLine và wordWrap), mà bạn không thể thực hiện mà không mở rộng lớp Button. Vì vậy, nếu bạn tạo một lớp mới mở rộng nút và thiết lập các thuộc tính và không một công việc ít để làm cho mọi việc đo lường một cách chính xác:

package 
{ 
    import flash.text.TextFieldAutoSize; 
    import mx.controls.Button; 

    public class WrappingButton extends Button 
    { 


     public function WrappingButton() 
     { 
      super(); 
     } 

     override protected function createChildren():void 
     { 
      super.createChildren(); 

      textField.multiline = true; 
      textField.wordWrap = true; 
      textField.autoSize = TextFieldAutoSize.CENTER; 
     } 

     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
     { 
      super.updateDisplayList(unscaledWidth, unscaledHeight); 
      textField.y = (this.height - textField.height) >> 1; 

      height = textField.height + getStyle("paddingTop") + getStyle("paddingBottom"); 
     } 
    } 
} 

... bạn có thể thả điều khiển mà thành MXML của bạn như vậy:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> 

    <local:WrappingButton label="The quick brown fox jumped over the lazy dog." width="100" paddingTop="10" paddingBottom="10" /> 

</mx:Application> 

Hy vọng điều đó sẽ hữu ích! Đăng lại với câu hỏi nếu bạn có.

+1

Thành phần tuyệt vời, nhưng tôi đang cố gắng sử dụng nó làm trình kết xuất mục tùy chỉnh và updateDisplayList() được gọi trong một vòng lặp vô hạn. – Laramie

+0

Tôi làm cách nào để sử dụng cùng một thành phần trong Flash Builder 4.6? Khi tôi gặp lỗi trên 'textField'" Truy cập thuộc tính không xác định " – abi1964

4

Cố gắng sử dụng &#13;

Tôi đang sử dụng

<s:Button label="Top two&#13;states result" height="100%" width="100%" icon="@Embed(source='assets/bar.png')" chromeColor="#A3F4FD"/> 

và nó nhãn đa dòng.

+0

Tuyệt vời, hoạt động như một nét duyên dáng! – Ska