ActionScript 3:在flash嵌入时保持textarea UIscrollbar位置失去焦点

时间:2010-10-18 23:29:32

标签: actionscript-3 flash-cs4 htmltext

我正在使用Flash CS4。当CS4在编译后预览swf时,一切都能正常运行。

但是,在将Flash项目嵌入网页后,如果textArea在flash片段中失去焦点,则textarea的内置UIscrollbar将重置为最顶层。

这是踢球者:如果我向textArea添加一个FOCUS_OUT事件监听器来存储当前滚动条值,我发现即使在触发FOCUS_OUT事件之前,滚动条值也已重置为最小值! WTF?

我认为这是因为textArea的htmlText属性是动态填充的。 Adobe AIR具有处理HTML的高级方法,但不是简单的AS3,哦不。多么讨厌。可以做些什么?

1 个答案:

答案 0 :(得分:0)

我从没想过我会回答我自己的问题,但现在就是这样。原来htmlText的东西可能是一个鸭子。滚动条抖动发生在被点击的动态生成的内容窗口和失去焦点之间,因此这将捕获当前位置以及点击事件底部的滚动条是否将该信息传递给焦点事件。 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;
        }
    }
   );
}