編集不可の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();