我从没想过我会回答我自己的问题,但就是这样。原来 htmlText 的东西可能是谣言。滚动条抖动发生在动态生成的内容窗口被点击和失去焦点之间,因此这会捕获当前位置以及滚动条是否在点击事件的底部,并将该信息传递给焦点事件。displayWindow 是具有动态生成内容的窗口。
我对 AS3 比较陌生,所以如果其中有任何不符合犹太教的规定,请告诉我。
displayWindow.addEventListener(MouseEvent.ROLL_OUT, handleClick);
function handleClick(event:MouseEvent):void
{
//here, user has clicked output window
var currentPosition = displayWindow.verticalScrollPosition;
var atTheBottom:Boolean = (currentPosition == displayWindow.maxVerticalScrollPosition);
var focusAdded:Boolean = false;
displayWindow.addEventListener(FocusEvent.FOCUS_OUT,
function handy() {
//here, user has clicked away from output window
if (!focusAdded) {
if (atTheBottom)
displayWindow.verticalScrollPosition = displayWindow.maxVerticalScrollPosition;
else
displayWindow.verticalScrollPosition = currentPosition;
focusAdded = true;
} else {
displayWindow.removeEventListener(FocusEvent.FOCUS_OUT, handy);
focusAdded = false;
}
}
);
}