0

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

0 回答 0