0

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

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

这是踢球者:如果我在 textArea 中添加一个 FOCUS_OUT 事件侦听器来存储当前滚动条值,我发现滚动条值甚至在触发 FOCUS_OUT 事件之前就已重置为最小值!怎么回事?

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

4

1 回答 1

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;
        }
    }
   );
}
于 2010-10-20T00:08:04.430 回答