【发布时间】:2010-03-25 19:13:17
【问题描述】:
我基本上想通过循环链接按钮而不是制作文本字段来让事情变得更容易,因为链接按钮已经编程了翻转。
但我有很多文字,而且还在继续。我希望它可以像使用文本字段一样换行。
谢谢
package {
import mx.controls.LinkButton;
import flash.text.TextLineMetrics;
public class multiLineLinkButton extends LinkButton {
override protected function createChildren():void {
super.createChildren();
if (textField){
textField.wordWrap = true;
textField.multiline = true;
}
}
override public function measureText(s:String):TextLineMetrics {
textField.text = s;
var lineMetrics:TextLineMetrics = textField.getLineMetrics(0);
lineMetrics.width = 700;
lineMetrics.height = textField.textHeight;
return lineMetrics;
}
}
}
这是组件,但就像我说的那样,一切都自动居中。
我试过 paddingLEFT =0;并尝试 setStyle("paddingLEFT", 0);但这些方法不起作用。
var test:multiLineLinkButton = new multiLineLinkButton();
test.label = "sdfdsfdsfdsfsdfsdfsdfdsfsdfdsfdsdsfdsfdsfdffsdfdsfdfdsfdsfdsfdsfdsfdsfsdfdsfdfdsfdfdsfdsfsdfsdfsdf";
test.setStyle("textAlign","left");
var metrics:TextLineMetrics = measureText(test.label);
trace(metrics.height);
myCanvas.addChild(test);
所以 metrics.height 给了我 14 的高度,我相信它是单行,即使它换行了。
【问题讨论】:
-
让我们看看 multiLineLinkButton 类背后的代码,这就是我们解决身高问题的方法。
-
抱歉,上面的第一段代码是multiLineLinkButton。
-
呃,我应该看到的。所以这就是你要做的。 1)给你的文本字段一个名字。 2) 编写一个公共函数,将其命名为 getHeight()。 3) 让该函数返回带有 getchildbyname 的文本字段的高度。现在您有了一个可以从主应用程序调用的函数,该函数将返回您要查找的高度。
-
所以我在我的自定义组件文件中创建了一个名为 getHeight 的函数。一个不是“textField”的文本字段名称吗?两个不会返回 textField.measuredHeight 给我高度?抱歉,我不知道该怎么做?
-
组件中的 textField.textHeight 在首次运行时也会给出不正确的高度。但是当你翻转链接时,你会得到正确的高度......我只是困惑
标签: apache-flex