我曾经知道如何做到这一点,所以,我知道这是可能的,但我不能再弄明白。我通过设置width属性来改变我TextField的宽度,但是会扭曲文本。我想改变文本字段的宽度而不改变字体的外观(显然)。我相信它与自动图文集或一些这种白痴有关(为什么我会想要扭曲我的文本?!),但我无法回想起来。如何在不拉伸文本的情况下更改TextField的宽度?
myField.width = 100; //如果原始宽度为50,则只需将该字段延伸至100,而不是添加50个可以绘制字符的像素。
TIA
我曾经知道如何做到这一点,所以,我知道这是可能的,但我不能再弄明白。我通过设置width属性来改变我TextField的宽度,但是会扭曲文本。我想改变文本字段的宽度而不改变字体的外观(显然)。我相信它与自动图文集或一些这种白痴有关(为什么我会想要扭曲我的文本?!),但我无法回想起来。如何在不拉伸文本的情况下更改TextField的宽度?
myField.width = 100; //如果原始宽度为50,则只需将该字段延伸至100,而不是添加50个可以绘制字符的像素。
TIA
我猜你的问题是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;
}
}
}
}
希望这是你正在寻找的。
您在IDE中是否正确? 尝试双击文本字段,然后使用文本框右侧的框来调整整个事物的大小,而不会拖动文本。
**编辑**
这里是如何调整一个TextField工作的代码示例:
http://wonderfl.net/c/qbDv
但这只是与动态的TextField工作。使用代码创建的TF可以是DYNAMIC或INPUT,但是在IDE中可以创建静态TF,并且不能通过ActionScript调整大小。所以你必须改变TextField的类型或者通过脚本创建TF。
在IDE中,您需要
a)双击文本字段。这将使您进入文本字段的编辑模式。然后调整它的大小。
或
b)选择文本工具,然后调整它的大小。
使用变换工具将增加宽度,好像它是一个形状调整其大小(这是在一些动画非常有用的,所以它不是真正的是白痴)
对不起,我想我不清楚,我会编辑我的问题,我在运行时在代码中更改宽度,而不是在IDE中。 – 2012-02-25 15:48:38
另一种解决方案将是使用一个包装对于文本字段,像Group
元素,并且只是增加其宽度。
no no ...我改变了代码的宽度(因此在这个问题中的AS3标签)。 – 2012-02-25 15:47:57
这是一个动态的TextField吗?那么这应该工作。 – pkyeck 2012-02-25 16:54:41
我同意它*应该可以工作,但它不起作用。该字段最初是在IDE中创建的,但随后在代码中进行了更改,随后而不是越来越宽地延伸文本。 – 2012-02-25 17:58:53