Чтобы решить эту проблему, вы должны изменить строку, которая вызывает 'createTooltip' на следующее:
errorTip = ToolTipManager.createToolTip(errorMsg,object.getBounds(root).x + object.width,object.getBounds(root).y, null, object as IUIComponent) as ToolTip;
Идея заключается в том, что теперь вы можете просто вызвать 'createErrorMsg ("myError", myComponent) ", и он отобразит там сообщение об ошибке, после чего вы можете добавить еще одну функцию:
private function clearError():void
{
if(errorTip) errorTip.visible = false;
}
чтобы фактически удалить сообщение об ошибке. Недостатком является то, что он отображает только одно сообщение за раз, но я немного его подправлю, чтобы изменить это. Итак, вот мое лучшее решение:
Сообщения об ошибках (традиционно) будут отображаться только в пакетном наборе. (По сути, вы будете иметь только несколько подсказок, отображаемых в определенный момент времени, и все они будут связаны с формой, в которой вы находитесь). Это не всегда будет правдой, но это меня не касается. Я создал служебный класс, который выполняет обработку сообщений об ошибках:
package Utils
{
import mx.controls.ToolTip;
import mx.core.IUIComponent;
import mx.managers.ToolTipManager;
public class ErrorUtils
{
private static var errorCache:Array = new Array();
public function ErrorUtils()
{
}
public static function createErrorMsg(errorMsg:String, object:Object):void {
var errorTip:ToolTip = ToolTipManager.createToolTip(errorMsg,object.getBounds(object.root).x + object.width,object.getBounds(object.root).y, null, object as IUIComponent) as ToolTip
errorTip.setStyle("styleName", "errorTip");
errorTip.visible = true;
errorTip.enabled = true;
var position:int = errorCache.length;
errorCache.push(errorTip);
}
public static function clearAllErrors():void
{
for each(var error:ToolTip in errorCache)
{
ToolTipManager.destroyToolTip(error);
}
}
}
}
Чтобы использовать класс, вы просто вызываете ErrorUtils.createErrorMsg («мое сообщение», invalidComponent), а для очистки ошибок просто вызываете ErrorUtils.clearAllErrors ()
Таким образом, если у вас есть форма и для нее есть функция проверки, вы просто вызываете эту функцию каждый раз, когда она возвращается как недействительная. Единственное, чего здесь не хватает, - это какого-либо способа очистки конкретной ошибки, но для ее обработки вы можете поместить все вызовы создания в основную функцию проверки, которая проверяет все поля в вашей форме, а затем вызывать ее каждый раз. вы получаете или теряете фокус на поле и вызываете ErrorUtils.clearAllErrors () в начале функции.
КСТАТИ:
это исходный учебник, который я получил для этого, я просто немного его абстрагировал
http://aralbalkan.com/1125
поэтому кредиты перейти на вышеуказанный сайт для оригинального кода