используйте не setTextFormat, а defaultTextFormat
Код AS3:
package {
import flash.display.Sprite;
import flash.events.FocusEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
public class TestClass extends Sprite {
private var _greyFormat: TextFormat = new TextFormat("verdana", 14, 0xC0C0C0, null, null, null, null, null, "right");
private var _blackFormat: TextFormat = new TextFormat("verdana", 14, 0x000000, null, null, null, null, null, "right");
private var _textField: TextField = new TextField();
private var _defaultText: String = "текст";
public function TestClass() {
_textField.type = TextFieldType.INPUT;
_textField.border = true;
_textField.width = 200;
_textField.height = 25;
_textField.defaultTextFormat = _greyFormat;
_textField.text = _defaultText;
_textField.addEventListener(FocusEvent.FOCUS_IN, onFocusIn);
_textField.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut);
addChild(_textField);
}
private function onFocusOut(e:FocusEvent):void {
// если введены только пробелы, то меняем текст на текст по умолчанию
if (_textField.text.replace(/^\s+$/, "").length < 1) {
_textField.defaultTextFormat = _greyFormat;
_textField.text = _defaultText;
}
}
private function onFocusIn(e:FocusEvent):void {
if (_textField.text.replace(/^\s+$/, "").length > 0 && _textField.text == _defaultText) {
_textField.defaultTextFormat = _blackFormat;
_textField.text = "";
}
}
}
}