Joe,
Try adding #getLineCount to the mix. It should help ensure your text
never exceeds the field boundaries.
Note that I re-instated your original while loop in my handler. I
discovered that is was in fact necessary the first time I copied and
pasted text into my test-it-out field. I also slightly re-factored
#getTextMinusOneCharacter.
// Returns one of two possible things, depending on the "countType"
argument:
// 1. Total lines occupied by text within a field (passing a "text"
argument, or nothing).
// 2. Display height of a field, measured in lines (passing a "field"
argument).
function getLineCount(targetField:TextField, countType:String):Number
{
if (targetField instanceof TextField)
{
var lineCount:Number;
var originalScrollPosition:Number;
countType = countType.toLowerCase() != 'field' ? 'text' : 'field';
originalScrollPosition = targetField.scroll;
targetField.scroll = countType == 'text' ? targetField.maxscroll :
1;
lineCount = targetField.bottomScroll;
targetField.scroll = originalScrollPosition;
return lineCount;
}
}
// Retrieves the specified string without the last non-HTML character.
function getTextMinusOneCharacter(targetText:String,
presumeHTML:Boolean):String
{
var lastBracketIndex:Number;
if (presumeHTML !== false)
{
lastBracketIndex = targetText.lastIndexOf('<');
while (lastBracketIndex > 0 && targetText.charAt(lastBracketIndex -
1) == '>')
{
lastBracketIndex = targetText.lastIndexOf('<', lastBracketIndex -
1);
}
lastBracketIndex--;
}
if (typeof lastBracketIndex == 'number' && lastBracketIndex > 0)
{
targetText = targetText.slice(0, lastBracketIndex) +
targetText.slice(lastBracketIndex + 1);
}
else
{
targetText = targetText.slice(0, targetText.length - 1);
}
return targetText;
}
this.textBox.onChanged = function():Void
{
while (this._parent.getLineCount(this, 'text') >
this._parent.getLineCount(this, 'field'))
{
this.htmlText =
this._parent.getTextMinusOneCharacter(this.htmlText);
}
};
-
Jason
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com