代码之家  ›  专栏  ›  技术社区  ›  Alkanshel

ActionScript 3:在flash嵌入中保持文本区域UIscrollbar的位置

  •  0
  • Alkanshel  · 技术社区  · 14 年前

    我在用闪存CS4。当CS4在编译swf之后预览swf时,一切都正常工作。

    关键是:如果我在文本区域中添加一个焦点输出事件监听器来存储当前的滚动条值,我会发现即使在焦点输出事件被触发之前,滚动条值也被重置为最小值!世界跆拳道联盟?

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Alkanshel    14 年前

    我从没想过我会回答我自己的问题,但现在是了。原来htmlText的事情可能是个谣言。滚动条抖动发生在动态生成的内容窗口被单击和失去焦点之间,因此这将捕获当前位置以及滚动条是否位于单击事件的底部并将该信息传递给焦点事件。displayWindow是一个动态生成内容的窗口。

    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;
            }
        }
       );
    }
    
    推荐文章