Actionscript 3: TextArea- UIScrollBar Position auf Verlust des Fokus in Flash einbetten Aufrechterhaltung

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

Frage

Ich bin mit Flash CS4. Alles funktioniert, wie es sollte, wenn CS4 Vorschau des SWF, nachdem es kompiliert wird.

Doch nach dem Flash-Elemente in einer Webseite einbetten, wenn das Textfeld des Fokus innerhalb des Flash-Stückes verliert, das Textfeld eingebaute in UIScrollBar setzt bis ganz nach oben.

Hier ist der Kicker: Wenn ich ein FOCUS_OUT Ereignis-Listener das Textfeld fügen Sie den aktuellen Scrollbar Wert zu speichern, finde ich, dass der Scrollbar Wert zurückgesetzt auf ein Minimum wurde, noch bevor die FOCUS_OUT Ereignis ausgelöst wird! WTF?

Ich denke, das auftritt, weil das Textfeld des html propery dynamisch bevölkert. Adobe AIR bietet fortschrittliche Methoden für die Durchgabe HTML, aber nicht einfach AS3, oh nein. Wie widerlich. Was kann getan werden?

War es hilfreich?

Lösung

Ich hätte nie gedacht, würde ich meine eigene Frage zu beantworten, aber hier ist es. Stellt sich heraus, die html Sache kann ein canard gewesen sein. Der Scrollbar Jitter geschieht zwischen den dynamisch generierten Inhalt Fensters angeklickt wird und dessen Fokus verliert, so dass diese die aktuelle Position erfasst und ob die Bildlaufleiste am unteren Rand auf dem Click-Ereignis und leitet diese Informationen an die Fokus-Ereignis. displayWindow ist die mit dynamisch erzeugten Inhalt.

ich relativ neu bin auf AS3, so lassen Sie mich wissen, ob irgendetwas davon nicht koscher ist.

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;
        }
    }
   );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top