PDA

Просмотр полной версии : загрузчик xml повторно не работает


allanon85
09.12.2008, 14:28
помогите плз.

в первом кадре стоит код предзагрузчика..который должен грузить всю флешку, а так же хмл данные.
в первый раз оно работает, но если обнавить флешку, то сама флешка появляеца, а хмл данные нет..где ошибка, понять не магу(

var dannie:XML = new XML();
dannie.ignoreWhite = true;

dannie.load("xml/dannie.xml");

this.onEnterFrame=function() : Void {

if (this.getBytesLoaded()+dannie.getBytesLoaded()<this.getBytesTotal()+dannie.getBytesTotal()) {
var percent:Number=Math.round(((this.getBytesLoaded()+dannie.getBytesLoaded())/(this.getBytesTotal()+dannie.getBytesTotal()))*100);
pole.text=percent+" %";
this.stop();
}
else if ((this.getBytesLoaded()+dannie.getBytesLoaded())==(this.getBytesTotal()+dannie.getBytesTotal())) {
gotoAndPlay(2); delete this.onEnterFrame;
}
}

chingachgoog
09.12.2008, 15:27
А как вы поняли, что после обновления XML данных нет?

faust.d503
09.12.2008, 15:28
использовать событие XML.onLoad для отлавливания момента загрузки.

Зачем xml прелоадер не очень ясно. Неужели такой большой и долго грузиться?

ЗЫ Русские имена переменных на транслите - плохой тон ИМХО.

allanon85
09.12.2008, 15:59
А как вы поняли, что после обновления XML данных нет?
на экране в поле должен занаситься текст взятый из хмл..а он не появляеца..

в общем я вроде разобрался...
это из за того что сама хмл весит мало, а основное время уходит, наверное, на поключение к этой хмл..так?

изменил код на вот такой:
var dannie:XML = new XML();
dannie.ignoreWhite = true;
dannie.onLoad= function (success:Boolean) {
if (success) {delete this.onEnterFrame;play();}

}

dannie.load("xml/dannie.xml");

this.onEnterFrame=function() : Void {
var bytesLoaded:Number = dannie.getBytesLoaded();
var bytesTotal:Number = dannie.getBytesTotal();
var percent:Number = Math.round(((bytesLoaded+this.getBytesLoaded()) / (bytesTotal+this.getBytesTotal()) ) * 100);
if (!isNaN(percent)){
pole.text=percent+" %";}
else {pole.text="Загрузка XML";}
this.stop();

if ((bytesLoaded+this.getBytesLoaded()) == (bytesTotal+this.getBytesTotal())){
delete this.onEnterFrame; play();
}
}

в итоге
при первой загрузке в начале появляеца надпись "загрузка хмл" а патом идет процент..

а при обнавлении не начинает работать пока не загрузится хмл..
но мне бы хотелось чтобы загрузка хмл отслеживалась в працентах..но не получается т.к. вот это выражение
(bytesLoaded/bytesTotal)*100
выводится как "NaN"..
а как по-другому я незнаю(

Добавлено через 9 минут
кстати, при таком коде, флешка(без хмл) будет сохранятся на компах у людей?
а то у меня в фаирфоксе сохраняет, а в опере не сохраняет..и толи что то в браузерах нето, толи это из за кода...

nOobCrafter
09.12.2008, 16:25
А если так попробовать?
bytesLoaded = Math.round(_root.getBytesLoaded());
bytesTotal = Math.round(_root.getBytesTotal());
percent = (bytesLoaded/bytesTotal)*100;
З.Ы. не знаю почему, но если у тебя
{pole.text="Загрузка XML";}
заменить на
{trace(123)} то трейса нету(((

allanon85
09.12.2008, 16:35
nOobCrafter,
проверил щас с trace тоже работает.

Mnilionic
09.12.2008, 18:25
у мня работает замечательно. проценты бегают, всё загружается и отображается:

stop();
var dannie:XML = new XML();
dannie.ignoreWhite = true;
dannie.load("xml/dannie.xml");

onEnterFrame = function(){
var loaded = dannie.getBytesLoaded() + _root.getBytesLoaded();
var total = dannie.getBytesTotal() + _root.getBytesTotal();
var percent = Math.round( loaded / total * 100);

if( !isNaN(percent) ) pole.text = 'загружено: ' + percent + '%';
else pole.text = "Загрузка...";


if ( loaded == total){
delete onEnterFrame;
trace('Всё загруженно.');
trace(dannie)
}
}

nOobCrafter
09.12.2008, 19:26
Да, вроде как пашет корректно, спс большое ;)