Просмотр полной версии : Событие вызываемое программные изменением содержимого текстового поля
St. Father
11.07.2006, 12:44
Собственно, как узнать о программном изменении любого (не конкретного) текстового поля.
Скажем так (для ясности): можно ли заставить (сделать аналог) TextField.prototype.onChanged который будет пинать листнера при программном назначении текстовому полю text`a (htmlText`a)?
DarkLight
11.07.2006, 12:58
По-моему нет. Но можно написать свой метод в TextField.prototype, который запишет текст и будет пинать листнера, а потом пользоваться им вместо изменения свойства text/htmlText.
St. Father
11.07.2006, 13:28
этого как раз хотелось избежать... :(
Идея замутить прелоадер для картинок в текстовых полях.
для всех текстовых полей в проекте.
TextField.prototype.getNewText = function () {
return ASnative (104, 15).apply (this, arguments);
};
TextField.prototype.setNewText = function (arg) {
this.onChangedExt ();
ASnative (104, 16).apply (this, [arg]);
};
TextField.prototype.getNewHTMLText = function () {
return ASnative (104, 19).apply (this, arguments);
};
TextField.prototype.setNewHTMLText = function (arg) {
this.onChangedExt ();
ASnative (104, 20).apply (this, [arg]);
};
TextField.prototype.addProperty ("text", TextField.prototype.getNewText, TextField.prototype.setNewText);
TextField.prototype.addProperty ("htmlText", TextField.prototype.getNewHTMLText, TextField.prototype.setHTMLText);
/*******************************************************************************************/
txt.onChangedExt = function () {
trace ("Alert!");
};
this.onEnterFrame = function () {
txt.text += 1;
};
Но:
1. Работает только если на сцене есть текстовое поле до или во время описания TextField.prototype
2. Использовать ASnative вобще-то не хорошо :)
St. Father
11.07.2006, 15:18
TextField.prototype.getNewText = function ()
{
return ASnative (104, 15).apply (this, arguments);
};
TextField.prototype.setNewText = function (arg)
{
this.onChangedExt ();
ASnative (104, 16).apply (this, [arg]);
};
TextField.prototype.getNewHTMLText = function ()
{
return ASnative (104, 19).apply (this, arguments);
};
TextField.prototype.setNewHTMLText = function (arg)
{
this.onChangedExt ();
ASnative (104, 20).apply (this, [arg]);
};
TextField.prototype.addProperty ("text", TextField.prototype.getNewText, TextField.prototype.setNewText);
TextField.prototype.addProperty ("htmlText", TextField.prototype.getNewHTMLText, TextField.prototype.setNewHTMLText);
/*******************************************************************************************/
TextField.prototype.onChangedExt = function ()
{
trace ("Alert!");
};
_txt.htmlText = "dd";
немного подправил имена)
все действительно работает.
Решение просто гениальное))) пойду перечитаю про ASnative
З.Ы.: Огромное спасибо!
и еще... если это как-нибудь в конструктор Текстфилда забить?? чтобы при "возникновении" текстового поля на стэйдже.......
Проблема 1 (для динамически созданных полей) решается если написать new TextField (); перед определением getter/setter. Спасибо Nith'у за решение.
St. Father
12.07.2006, 14:37
Спасибо Nith'у!!!! :)
Можно я устрою культ?
Спасибо Nith'у!!!! :)
Можно я устрою культ?
http://www.flasher.ru/forum/showthread.php?t=80379
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.