PDA

Просмотр полной версии : неправильное обновление TextField


Cornford
02.01.2011, 12:53
Добры день.
Подскажите как правильно сделать, чтобы при добавлении сообщения в гостевую книгу
оно сразу отображалось в TextField, а не после обновления страницы.
Сообщения хранятся в xml. Запись в xml производится с помощью php.

bav
02.01.2011, 17:17
Почитайте про ExternalInterface (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/external/ExternalInterface.html) и передавайте флешке новое сообщение сразу после нажатия кнопки, отвечающей за сохранение этого сообщения в xml.

Cornford
02.01.2011, 22:31
Спасибо. почитал честно говоря не особо понял о чем речь... уровень еще слабоват.
я сейчас делаю так: у меня происходит загрузка xml и далее вывод в TextField, далее при заполнении полей
и при нажатии на кнопку "отправить" сообщение передается в пхп а оттуда далее в xml. Мне кажется что далее мне надо снова загрузить уже новй хмл тоесть загрузить его повторно опятьже после нажатия этой само кнопки "отправить". В принципе я так и делаю но почему не работает. вот код:

private function button6Clicked(event:Event):void {
loader.load(request);
loader.addEventListener(Event.COMPLETE, loadComplete);
}
private function submitClicked(event:Event):void {
var thismonth:uint = dateToday.getMonth();
var dateStr:String = (dateToday.getDate()+"."+ dateToday.getMonth()+"."+dateToday.getFullYear());
phpLoader.dataFormat = URLLoaderDataFormat.TEXT;

phpVars.name = nameText.text;
phpVars.title = titleText.text;
phpVars.date = dateStr;
phpVars.full = fullText.text;
phpFileRequest.data = phpVars;
phpLoader.load(phpFileRequest);
loader.load(request);
loader.addEventListener(Event.COMPLETE, loadComplete);
}
private function loadComplete(event:Event):void {
myXML = XML(loader.data);
xmlList = myXML.children();

var t:int = 0;

while(xmlList.name[t] != undefined){
t = t + 1;
}
for (var i:int = 0; i < t; i++) {
messageViewer.htmlText += ("<b><u>Имя:</u></b> " + xmlList.name[i].toString());
messageViewer.htmlText += ("<b><u>Заголовок:</u></b> " + xmlList.title[i].toString());
messageViewer.htmlText += ("<b><u>Дата:</u></b> " + xmlList.date[i].toString());
messageViewer.htmlText += ("<b><u>Сообщение:</u></b> " + xmlList.full[i].toString());
messageViewer.htmlText += (".......................................................................................................................................");
}
}

bav
03.01.2011, 11:40
А разве нельзя сделать так:

// (подозреваю, что данная функция прослушивает событие класса MouseEvent)
private function submitClicked(event:Event):void
{
var thismonth:uint = dateToday.getMonth(); // данная переменная используется?
var dateStr:String = (dateToday.getDate()+"."+ dateToday.getMonth()+"."+dateToday.getFullYear());

// перед отправкой данных PHP добавлять их в текстовое поле
messageViewer.htmlText += ("<b><u>Имя:</u></b> " + nameText.text);
messageViewer.htmlText += ("<b><u>Заголовок:</u></b> " + titleText.text);
messageViewer.htmlText += ("<b><u>Дата:</u></b> " + dateStr);
messageViewer.htmlText += ("<b><u>Сообщение:</u></b> " + fullText.text);
messageViewer.htmlText += (".......................................................................................................................................");

phpLoader.dataFormat = URLLoaderDataFormat.TEXT;
phpVars.name = nameText.text;
phpVars.title = titleText.text;
phpVars.date = dateStr;
phpVars.full = fullText.text;
phpFileRequest.data = phpVars;
phpLoader.load(phpFileRequest);
loader.load(request);
loader.addEventListener(Event.COMPLETE, loadComplete);
}

Cornford
03.01.2011, 22:19
Спасибо! вобщемто неплохое решение. работает. правда есть один минус: если я после добавления сообщения снова нажимаю кнопку которая показывает раздел с гостевой книгой то сообщение пропадает, если после этого обновить страницу то снова показывается...