PDA

Просмотр полной версии : Задачка про URLLoader


alex3dsflash
21.09.2011, 20:36
Доброго времени суток!
Продолжаю мучить Мука чтобы поженить php b Flash.

Если не лень, помогоите пожалуйста.

Есть честно скачаный код, который работает. Но !!! Если я добавляю юзера, я не вижу своего нового юзера сразу. Вижу все, если только перезагружаю флешку. Как написать функцию (уже пишу она в конце называется function F_BG_bg(event:Event){ } ) чтобы эта функция опять все выводила с новыми данными?


// Загрузка XML
var urlRequest:URLRequest = new URLRequest("http://www.shlagbaum-service.ru/3/messages5.xml");
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener (Event.COMPLETE,fileLoaded);

urlLoader.load (urlRequest);
// Настройка XML
var myXML:XML = new XML();
myXML.ignoreWhitespace = true;
var xmlList:XMLList;
// Объявление массивов для хранения данных
var arrayName:Array = new Array();
var arrayTitle:Array = new Array();
var arrayDate:Array = new Array();
var arrayFull:Array = new Array();
// Блокируем кнопки 'Next' и 'Previous'
nextBt.enabled = false;
prevBt.enabled = false;
// Заполняем массивы данными из XML



var xmlName:String;
function fileLoaded (event:Event):void {
myXML = XML(event.target.data);
xmlList = myXML.children();
for (var i:int=0; i<xmlList.length(); i++) {
xmlName = xmlList[i].name;////////////////
var xmlTitle:String = xmlList[i].title;
var xmlDate:String = xmlList[i].date;
var xmlFull:String = xmlList[i].full;
arrayName.push (xmlName);
arrayTitle.push (xmlTitle);
arrayDate.push (xmlDate);
arrayFull.push (xmlFull);
if (i == xmlList.length() - 1) {
updateText ();
}
if (i > 4 ) {
nextBt.enabled = true;
}
}
}
// Заполняем текстовое поле для отображения сообщений
messageText.htmlText = "Здесь пишем!";
var maximumMessages:Number = 5;
var currentMessages:Number = 0;
function updateText () {
messageText.htmlText = "";
if (arrayName.length <= maximumMessages) {
maximumMessages = arrayName.length;
nextBt.enabled = false;
}
if (currentMessages < 0) {
currentMessages = 0;
maximumMessages = 5;
nextBt.enabled = true;
}
for (var i = currentMessages; i<maximumMessages; i++) {
messageText.htmlText += ("<b><u>Имя:</u></b> " + arrayName[i]);
messageText.htmlText += ("<b><u>Тема:</u></b> " + arrayTitle[i]);
messageText.htmlText += ("<b><u>Дата:</u></b> " + arrayDate[i]);
messageText.htmlText += ("<b><u>Сообщение:</u></b> " + arrayFull[i]);
messageText.htmlText += (".....................................................");
}
currentMessages=i;
scroller.scrollTarget=messageText;
}
// Проверяем, нажимаются ли кнопки 'Next' или 'Previous'
nextBt.addEventListener (MouseEvent.MOUSE_UP,nextFunc);
prevBt.addEventListener (MouseEvent.MOUSE_UP,prevFunc);
// 'Next' функция
function nextFunc (event:MouseEvent) {
messageText.htmlText="";
maximumMessages+=5;
updateText ();
prevBt.enabled=true;
//urlLoader.load (urlRequest);//////////////////////////////////////////
}
// 'Previous' функция
function prevFunc (event:MouseEvent) {
messageText.htmlText="";
maximumMessages-=5;
currentMessages-=10;
nextBt.enabled = true;
updateText ();
if (currentMessages<=5) {
prevBt.enabled=false;
}
}

// Объявляем переменные чтоюы хранить имя пользователя, title и message
// Также убедимся, что поля ввода пустые
inputName.text = "";
var newName:String = "";
inputTitle.text = "";
var newTitle:String = "";
inputFull.text = "";
var newFull:String = "";
// Проверим, написали ли что-либо в поля ввода
function onEnterFrame (ev:Event):void {
if (inputName.text != "" && inputTitle.text != "" && inputFull.text != "") {
submitBt.enabled = true;
}
}
// Вызываем функцию 'onEnterFrame' в каждом фрейме, 30 раз в секунду
addEventListener (Event.ENTER_FRAME, onEnterFrame);
// Проверяем, нажимается ли кнопка 'submitBt'
submitBt.addEventListener (MouseEvent.MOUSE_UP,sendData);
// 'sendData' функция
function sendData (event:MouseEvent):void {
//Создаем данные
var dateToday:Date = new Date();
var thismonth:uint = dateToday.getMonth();
var month:Array = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var dateStr:String = (dateToday.getDate()+" "+month[thismonth]+" "+dateToday.getFullYear());
// Вводим инфу пользователя в переменные
newName = inputName.text;
newTitle = inputTitle.text;
newFull = inputFull.text;
// Создаем новый xml код с данными юзверя
var newItem:XML = XML("<message><name>" + newName + "</name><title>" + newTitle + "</title><date>"+ dateStr+ "</date><full>" + newFull + "</full></message>");
// Добавляем новый xml код к оригинальному xml коду 'myXML'
myXML.appendChild (newItem);
// Создаем новый запрос для php файла
var request:URLRequest = new URLRequest("http://www.shlagbaum-service.ru/3/messages5.php");
request.data = myXML;
request.contentType = "text/xml";
request.method = URLRequestMethod.POST;
// Посылаем xml данные в php
var loader:URLLoader = new URLLoader( );
loader.load ( request );
loader.addEventListener ( Event.COMPLETE, loaderDone );
}
// Перезагружаем гостевую книгу для отображения новой информации
function loaderDone (evt:Event):void {
arrayName = [];
arrayTitle = [];
arrayDate = [];
arrayFull = [];
inputName.text = "";
inputTitle.text = "";
inputFull.text = "";
submitBt.enabled = false;
maximumMessages = 10;////////////////////////////
currentMessages = 0;
messageText.htmlText = "";
urlLoader.load (urlRequest);
}

tracee.addEventListener(MouseEvent.CLICK, F_BG_bg);
var n:*;







//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

function F_BG_bg(event:Event){



urlLoader.addEventListener (Event.COMPLETE,fileLoaded);

urlLoader.load (urlRequest);

myXML = new XML();

myXML.ignoreWhitespace = true;

myXML = XML(event.target.data);
xmlList = myXML.children();
for (var i:int=0; i<xmlList.length(); i++) {
xmlName = xmlList[i].name;////////////////
var xmlTitle:String = xmlList[i].title;
var xmlDate:String = xmlList[i].date;
var xmlFull:String = xmlList[i].full;
arrayName.push (xmlName);
arrayTitle.push (xmlTitle);
arrayDate.push (xmlDate);
arrayFull.push (xmlFull);
if (i == xmlList.length() - 1) {
updateText ();
}
if (i > 4 ) {
nextBt.enabled = true;
}
}







messageText.htmlText = "";
if (arrayName.length <= maximumMessages) {
maximumMessages = arrayName.length;
nextBt.enabled = false;
}
if (currentMessages < 0) {
currentMessages = 0;
maximumMessages = 5;
nextBt.enabled = true;
}
for ( i = currentMessages; i<maximumMessages; i++) {
messageText.htmlText += ("<b><u>Имя:</u></b> " + arrayName[i]);
messageText.htmlText += ("<b><u>Тема:</u></b> " + arrayTitle[i]);
messageText.htmlText += ("<b><u>Дата:</u></b> " + arrayDate[i]);
messageText.htmlText += ("<b><u>Сообщение:</u></b> " + arrayFull[i]);
messageText.htmlText += (".....................................................");
}
currentMessages=i;
scroller.scrollTarget=messageText;








arrayName = [];
arrayTitle = [];
arrayDate = [];
arrayFull = [];
inputName.text = "";
inputTitle.text = "";
inputFull.text = "";
submitBt.enabled = false;
maximumMessages = 10;////////////////////////////
currentMessages = 0;
messageText.htmlText = "";
urlLoader.load (urlRequest);

trace(xmlName);

}

Добавлено через 47 секунд
тест :
http://www.shlagbaum-service.ru/3/XMLGuestBook5.swf

Добавлено через 5 минут
На самом деле дико туплю вторые сутки. Что ни делал не получается...

andrew911
21.09.2011, 23:24
У вас ХМЛ берется из кэша, добавляйте случайный параметр (время) к пути к ХМЛ файлу.
var urlRequest:URLRequest = new URLRequest("http://www.shlagbaum-service.ru/3/messages5.xml?XXXX");

alex3dsflash
22.09.2011, 10:44
Спасибо!!!!!!!!!!

Добавлено через 27 часов 54 минуты
Как Вы были правы!!! Тварь из кеша грузила! Спасибо, Респект и Уважуха!!!!!