ActionScript 3:维持Textarea uiscrollbar在Flash Embed中失去焦点的位置
-
09-10-2019 - |
题
我正在使用Flash CS4。当CS4在编译SWF之后,一切都可以正常运行。
但是,将闪存项目嵌入网页之后,如果Textarea在Flash片中失去了焦点,则Textarea的内置UISCrollbar将其重置为最高。
这是启动器:如果我将focus_out事件侦听器添加到文本方面以存储当前的滚动条值,我发现滚动栏值甚至在触发focus_out事件之前已重置为最小值! wtf?
我认为这是因为Textarea的HTMLText Propery动态填充了。 Adobe Air具有交付HTML的高级方法,但不是简单的AS3,哦,不。多么令人讨厌。可以做什么?
解决方案
我从没想过我会回答自己的问题,但是在这里。事实证明,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;
}
}
);
}
不隶属于 StackOverflow