Autor Zpráva
TREKr
Profil
Zdravím,

projel jsem si skoro všechny témata a nikde jsem nenašel to co potřebuji (je tady sice jedno hodně obsáhlé téma, ale dosti staré a není tam co potřebuji). Z externího TXT souboru chci načíst pomocí loadVars() hodnoty do pole a to pole následně použít. Všude jsem našel jen aplikace pro vložení textu do MC a to nechci, potřebuji pracovat s hodnotami toho pole.

V poli budou souřadnice cesty po které se mi bude pohybovat objekt. Těchto tras bude několik a na základě určité volby chci měnit vstupní soubor, proto jsem se rozhodl všechno napsat do funkce. Bohužel, když zavolám funkci tak mi z ní nevypadne požadované pole naplněné hodnotami. Když provedu test načtení hodnot (přes trace) a taky následné uložení do pole v samotné funkci tak je vše OK, ale po použití funkce už je to jiná písnička. Tady ve fóru jsem četl, že by to mohlo být například způsobeno časovou prodlevou než se proměnné uloží, ale to mi nedává v mém případě smysl. Txt soubor je formátovaný správně, příklad zde: (&promena=58,657,nazev,458,69,nazev,...&) Mohl by mi prosím někdo poradit, děkuji.

Zde je můj kód:
var souradnice:Array = new Array();

Nacteni = function(Soubor, PocetHodnotVretezci:Number):Void {
	var dats:LoadVars = new LoadVars();
   	dats.onLoad = function(succ) {
	   	if (succ) {
			var hodnoty:String = dats.promena;
			trace(hodnoty); //test vypadání hodnot - vše OK, hodnoty to vypíše
			var rozdeleneHodnoty:Array = hodnoty.split(",");
			trace(rozdeleneHodnoty); //vše OK
			for(i=(rozdeleneHodnoty.length-PocetHodnotVretezci);i>=0;i=(i-PocetHodnotVretezci)) {
				souradnice.push(rozdeleneHodnoty[i]);
			};
			trace(souradnice); //opět vše OK
	   	} else {
 			trace("Nepovedlo se načíst hodnoty ze souboru");
	   	}
   	}
	dats.load(Soubor);
}

Nacteni("kurz.txt", 3);
trace(souradnice); //nevypíše nic
weroro
Profil
Načítavanie exetrných dát sa vždy robí na prvom alebo druhom snímku. Načitané údaje sa potom v ďalších snímkoch zavolajú rovnako ako si sa o to snažil ty. Je tam potrebné zdržanie pred zavolaním.

var souradnice:Array = new Array();
Nacteni = function (Soubor, PocetHodnotVretezci:Number):Void {
	var dats:LoadVars = new LoadVars();
	dats.onLoad = function(succ) {
		if (succ) {
			var hodnoty:String = dats.promena;
			trace(hodnoty);
			//test vypadání hodnot - vše OK, hodnoty to vypíše
			var rozdeleneHodnoty:Array = hodnoty.split(",");
			trace(rozdeleneHodnoty);
			//vše OK
			for (i=(rozdeleneHodnoty.length-PocetHodnotVretezci); i>=0; i=(i-PocetHodnotVretezci)) {
				souradnice.push(rozdeleneHodnoty[i]);
			}
			trace(souradnice);
			//opět vše OK
		} else {
			trace("Nepovedlo se načíst hodnoty ze souboru");
		}
	};
	dats.load(Soubor);
};
Nacteni("kurz.txt", 3);


weroro = setInterval(function () {
	trace(souradnice);
	clearInterval(weroro);
}, 1000);
TREKr
Profil
Díky za odpověď, trochu mi pomohla, ale pořád mi nějak nechce najet to zobrazení trasy. Možná jsem to měl napsat hned na začátku, ale mám jen jednosnímkovovou animaci. Kde mám umístit script pro vykreslení té cesty, protože ani v tom "zpožďovacím" scriptu nebo za ním mi to nechce zobrazit. Můj script pro zobrazení trajektorie je takovýto:

this.createEmptyMovieClip("trajektorie", this.getNextHighestDepth());
	trajektorie.lineStyle(2, 0xF8BD5A, 100, true, "none", "round", "round", 1);
	_root.trajektorie.moveTo(x_poz[0], y_poz[0]);
	for (i = 1; i<x_poz.length-1; i++) {
		_root.trajektorie.lineTo(x_poz[i],y_poz[i]);
	}


Proměnné x_poz a y_poz jsou získané z TXT souboru, nebo by měly být.
weroro
Profil
Celé to zabal do jednej funkcie a tú funkciu potom zavolaj z toho onLoad.
btw: Nezabuni na to, že data prijaté z TXT sú string, takže ich musíš pred použitím pretypovať na Number.
var cislo:Number = Number(String);
TREKr
Profil
Fajn, to přetypování chápu a udělal jsem ho, ale jak to mám dát všechno do jedné fce a do které? Si mám vytvořit novou a pak ji zavolat v tom setInterval? To jsem totiž zkoušel a nejelo to :(
weroro
Profil
var souradnice:Array = new Array();
//
function fcnazov():Void {
	_root.createEmptyMovieClip("trajektorie",this.getNextHighestDepth());
	_root.trajektorie.moveTo(x_poz[0],y_poz[0]);
	_root.trajektorie.lineStyle(2,0xF8BD5A,100,true,"none","round","round",1);
	for (i=1; i<x_poz.length-1; i++) {
		_root.trajektorie.lineTo(x_poz[i],y_poz[i]);
	}
}
//
Nacteni = function (Soubor, PocetHodnotVretezci:Number):Void {
	var dats:LoadVars = new LoadVars();
	dats.onLoad = function(succ) {
		if (succ) {
			var hodnoty:String = dats.promena;
			trace(hodnoty);
			//test vypadání hodnot - vše OK, hodnoty to vypíše
			var rozdeleneHodnoty:Array = hodnoty.split(",");
			trace(rozdeleneHodnoty);
			//vše OK
			for (i=(rozdeleneHodnoty.length-PocetHodnotVretezci); i>=0; i=(i-PocetHodnotVretezci)) {
				souradnice.push(rozdeleneHodnoty[i]);
			}
			trace(souradnice);
			//opět vše OK
			//
			fcnazov();
			//
		} else {
			trace("Nepovedlo se načíst hodnoty ze souboru");
		}
	};
	dats.load(Soubor);
};
Nacteni("kurz.txt",3);
TREKr
Profil
Funguje, díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0