我正在为我的不可编辑的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();