如何在Flex 3中使用单个垂直滚动条滚动两个文本框?

时间:2009-06-10 12:05:24

标签: flex flex3

如何使用单个滚动条滚动两个文本框?

3 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

<mx:TextArea id="area1" verticalScrollPolicy="off" verticalScrollPosition="{area2.verticalScrollPosition}" />
<mx:TextArea id="area2" />

这样,area2将有一个滚动条,而area1将没有。当用户滚动区域2时,这两个区域将一起滚动。

答案 1 :(得分:1)

@Hrundik这是一个很好的方法,如果文本区域的内容和大小相等,但如果它们不是这将给你运行时错误,如果area2的verticalScrollPosition大于area1的最大值。所以我会创建一个函数来处理这个并检查area1.maxScrollPosition&gt;在设置area1滚动位置之前的area2.verticalScrollPosition。

另一种方法....

这只是一次完成或者你打算重复使用???

您可以将textarea扩展为将目标textarea作为参数,如下所示:

private var _target:TextArea;

public function set target(val:TextArea):void{
  _target = val;
}

然后覆盖srollHandler函数,就像这样......

override protected function srollHandler(event:Event):void{

  super.scrollHandler(event);

  if(event is ScrollEvent && _target != null)
    _target.verticalScrollPosition = super.textField.scrollV - 1;

}

最终像这样使用....

<shua:TextAreaExtend text="{someText}" target="{myBuddy}"/>
<mx:Text id="myBuddy" />

但这可能会被杀死......哈哈

答案 2 :(得分:1)

如果两个滚动控件的高度不同,您仍然可以通过获取并使用verticalScrollPosition作为百分比而不是绝对值来将一个绑定到另一个。

干杯