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)