ActionScript 3:在 Flash embed 中失去焦点时保持 textarea UIscrollbar 位置

Posted

技术标签:

【中文标题】ActionScript 3:在 Flash embed 中失去焦点时保持 textarea UIscrollbar 位置【英文标题】:ActionScript 3: maintaining textarea UIscrollbar position on loss of focus in flash embed 【发布时间】:2011-04-27 05:31:17 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

我从没想过我会回答我自己的问题,但就是这样。原来 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;
        
    
   );

【讨论】:

以上是关于ActionScript 3:在 Flash embed 中失去焦点时保持 textarea UIscrollbar 位置的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 Actionscript 3 / Flash中的半色调效果

ActionScript 3 使用Flash / Actionscript 3进行3D翻转效果

ActionScript 3 使用Actionscript 3 / Flash进行流体/果冻(ish)模拟

ActionScript 3 创建Flash SharedObject(Flash Cookie)

ActionScript 3 在Flash中绘制虚线lInes(FOUND)

有啥理由在 Flash 中编辑 ActionScript 3 文件实际上不会编辑它?