ActionScript 3: Поддержание позиции Textarea Uiscrollbar на потерю фокусировки в встраивании Flash

StackOverflow https://stackoverflow.com/questions/3964288

Вопрос

Я использую Flash CS4. Все функционируют, как это должно, когда CS4 предвещает SWF после его составления.

Тем не менее, после встраивания элемента Flash в веб-страницу, если текстовая пара теряет фокусировку внутри вспышки, встроенная встроенная UIScrollbar текстура.

Вот кикер: если я добавлю слушателя события Focuse_out в текстуарию, чтобы сохранить текущую стоимость прокрутки, я обнаружил, что значение Scrollbar было сброшено до минимума, даже до того, как событие Focke_out срабатывает! WTF?

Я думаю, что это происходит, потому что HTMLText HTMLText Textarea динамически заполняется. Adobe Air предлагает передовые методы для передачи HTML, но не просто AS3, о нет. Как отвратительно. Что может быть сделано?

Это было полезно?

Решение

Я никогда не думал, что отвечу на свой вопрос, но вот это. Оказывается HTMLText, возможно, была кадром. Jitter Scrollbar проходит между динамически сгенерированным щелчком окна контента и его ухудшением фокусировкой, поэтому это отражает текущую позицию и о том, находится ли прокрутка в нижней части на событии Click и передает эту информацию в событие фокусировки. 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;
        }
    }
   );
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top