我正在为不可编辑的 textField 实现滚动条,我还必须启用pageup,pagedown,end,mousewheel。一切都有效,除了轮子有时候。 我需要获取第一个可见字符索引,以确保键盘'光标'通过 setselection 更新。 我尝试使用scrollV,但有时候不行。
更新:添加了代码。注意:我玩了很多,这是一个半工作的解决方案。
滚动条滚动:
_TextField.scrollV = pValue*_TextField.maxScrollV
键盘上的:
if( pEvent.keyCode==Keyboard.UP ) {
_TextField.scrollV--
}
if( pEvent.keyCode==Keyboard.DOWN ) {
_TextField.scrollV++
}
if( pEvent.keyCode==Keyboard.END ) {
_TextField.setSelection(_TextField.length,_TextField.length)
_TextField.scrollV = _TextField.maxScrollV;
}
if( pEvent.keyCode==Keyboard.HOME ) {
_TextField.setSelection(0,0)workaround
_TextField.scrollV = 1;
}
setTimeout(scrollBarUpdate, 0, 0);
车轮上的:
_TextField.scrollV - = pEvent.delta;
var firstShownLine:int = _TextField.getLineIndexAtPoint(10,10)
if( firstShownLine != -1 ){
if(stage.focus == _TextField){
var currentIndex:int = _TextField.getLineOffset(firstShownLine);
var offsetUp:int = _TextField.getLineLength(_TextField.scrollV) * 2 + 2;
var offsetDown:int = _TextField.getLineLength(_TextField.scrollV - 1) * 2 + 2;
if(pEvent.delta>0){
_TextField.setSelection(currentIndex-offsetUp,currentIndex-offsetUp);
}
else{
_TextField.setSelection(currentIndex+offsetDown,currentIndex+offsetDown);
}
}
}
scrollBarUpdate();