ActionScript 3:Flash Embedでの焦点の喪失に関するテキストアレアの維持uiscrollbarの位置
-
09-10-2019 - |
質問
フラッシュCS4を使用しています。 CS4がSWFをコンパイルした後、SWFをプレビューするときに、すべてが機能します。
ただし、FlashアイテムをWebページに埋め込んだ後、TextareaがFlashピース内に焦点を失った場合、Textareaの組み込みのUiscrollbarが最上部にリセットされます。
キッカーは次のとおりです。Focos_outEventリスナーをTextareaに追加して現在のScrollbar値を保存すると、Focus_outイベントがトリガーされる前でもScrollbar値が最小にリセットされていることがわかります。 wtf?
Textareaのhtmltextプロパリーが動的に人口がかかっているため、これが発生していると思います。 Adobe AirにはHTMLを渡すための高度な方法がありますが、単純ではありません。なんて不快。何ができますか?
解決
私は自分の質問に答えるとは思っていませんでしたが、ここにあります。 htmltextのことはカナードだったかもしれません。 Scrollbar Jitterは、動的に生成されたコンテンツウィンドウがクリックされている間に焦点が合っている間に発生します。これにより、現在の位置とクリックイベントの下部にスクロールバーがキャプチャし、その情報をフォーカスイベントに渡すかどうかをキャプチャします。 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