2012-02-25 78 views
0

我曾經知道如何做到這一點,所以,我知道這是可能的,但我不能再弄明白。我通過設置width屬性來改變我TextField的寬度,但是會扭曲文本。我想改變文本字段的寬度而不改變字體的外觀(顯然)。我相信它與自動圖文集或一些這種白癡有關(爲什麼我會想要扭曲我的文本?!),但我無法回想起來。如何在不拉伸文本的情況下更改TextField的寬度?

myField.width = 100; //如果原始寬度爲50,則只需將該字段延伸至100,而不是添加50個可以繪製字符的像素。

TIA

回答

1

我猜你的問題是TextField.defaultTextFormat。

只是設置一個TextFormat對象,然後在你的文本字段上設置默認的文本格式,並且它應該保持文本格式,不管你對它做什麼。

當您更改文本字段的任何內容時,您會看到文本格式被重置並且必須重新應用它。但是,如果您設置默認的文本格式,它會自動處理。

這是一個骯髒的小原型。

package src 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 
    import flash.text.TextFormat; 

    public class Main extends Sprite 
    { 
     private var tx:TextField; 
     private var txf:TextFormat; 

     public function Main() 
     { 
      addEventListener(Event.ADDED_TO_STAGE, initMain); 
     } 

     private function initMain(e:Event):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, initMain); 

      // setup a text format so you can keep your text the same all the time. 
      txf = new TextFormat('Arial', 12, 0x000000); 

      tx = new TextField(); 
      tx.width = 50; 
      tx.text = "I want this text not to wrap so it will be resized at runtime." 

      // Turned this on for testing purposes only. 
      tx.wordWrap = true; 

      tx.defaultTextFormat = txf;  // This line is the x factor most likely. 

      tx.x = 100; 
      tx.y = 100; 

      addChild(tx); 

      stage.addEventListener(MouseEvent.CLICK, toggleTextFieldSize, false, 0 ,true); 
     } 

     private function toggleTextFieldSize(e:MouseEvent):void 
     { 
      if (tx.width == 50) 
      { 
       tx.width = 400; 
      } 
      else 
      { 
       tx.width = 50; 
      } 
     } 

    } 

} 

希望這是你正在尋找的。

1

您在IDE中是否正確? 嘗試雙擊文本字段,然後使用文本框右側的框來調整整個事物的大小,而不會拖動文本。

**編輯**

這裏是如何調整一個TextField工作的代碼示例:
http://wonderfl.net/c/qbDv

但這只是與動態的TextField工作。使用代碼創建的TF可以是DYNAMIC或INPUT,但是在IDE中可以創建靜態TF,並且不能通過ActionScript調整大小。所以你必須改變TextField的類型或者通過腳本創建TF。

+1

no no ...我改變了代碼的寬度(因此在這個問題中的AS3標籤)。 – 2012-02-25 15:47:57

+0

這是一個動態的TextField嗎?那麼這應該工作。 – pkyeck 2012-02-25 16:54:41

+0

我同意它*應該可以工作,但它不起作用。該字段最初是在IDE中創建的,但隨後在代碼中進行了更改,隨後而不是越來越寬地延伸文本。 – 2012-02-25 17:58:53

2

在IDE中,您需要

a)雙擊文本字段。這將使您進入文本字段的編輯模式。然後調整它的大小。

b)選擇文本工具,然後調整它的大小。

使用變換工具將增加寬度,好像它是一個形狀調整其大小(這是在一些動畫非常有用的,所以它不是真正的是白癡)

+1

對不起,我想我不清楚,我會編輯我的問題,我在運行時在代碼中更改寬度,而不是在IDE中。 – 2012-02-25 15:48:38

0

另一種解決方案將是使用一個包裝對於文本字段,像Group元素,並且只是增加其寬度。