Autor Zpráva
Honzass
Profil
Zdravím,
nevíte náhodou někdo, jak vyřešit následující problém? Když načtu proměnnou z texťáku a použiju ji pro podmínku if nebo jinou tak to funguje. Pokud ji však použiju pro název instance, tak to nefunguje. Přitom když bych definoval proměnnou přímo v Action scriptu a použil ji pro název instance, tak to funguje. Jsem z toho opravdu už jelen. Kde je teda chyba? Předem dík za odpověď.

NAČTENÍ PROMĚNNÉ
-------------------------
myVars = new LoadVars();
myVars.onLoad = function() {
_root.mapa.meritko = this.meritko;
_root.mapa.posun = this.posun;
};
Cislo = Math.random();
myVars.load("prevod.txt?"+Cislo);


TOTO FUNGUJE (proměnná "meritko")
------------------------------------------------
onClipEvent (enterFrame) {
if ( _root.mapa._xscale<"400" && _root.mapa.meritko == 1) {
_root.mapa._xscale = _root.mapa._xscale+6;
_root.mapa._yscale = _root.mapa._yscale+6;
}

TOTO NEFUNGUJE (proměnná "posun")
--------------------------------------------------
onClipEvent (load) {
id_mistnost = _root.mapa.posun;
_root.mapa.polohax = ((_root.mapa.id_mistnost._x)*(-4)+ 262);
_root.mapa.polohay = ((_root.mapa.id_mistnost._y)*(-4)+ 212);
}

PŘITOM TOTO FUNGUJE (např. proměnná " id_mistnost = A51)
---------------------------------------------------------------------- --------
onClipEvent (load) {
id_mistnost = A51;
_root.mapa.polohax = ((_root.mapa.id_mistnost._x)*(-4)+ 262);
_root.mapa.polohay = ((_root.mapa.id_mistnost._y)*(-4)+ 212);
}
Hanz
Profil
Honzass
1) Proč to nedáš do sekce o ActionScriptu ????
2) To je snad úplně jasné. V době kdy tu hodnotu voláš ještě neexistuje (není načtena).
onClipEvent (load) ---> při načtení MC ---> v té době to ještě není načteno
onClipEvent (enterFrame) ---> včasových intervalech podle nastaveného fps ---> pořád dokola takže je jedno kdy se to načte.
Honzass
Profil
Ještě jedna věc:
Dá se nahradit část názvu instance proměnnou?
třeba mám instance A1 A2 A3 A4 A5

šlo by?

for (i=0; i <5; i++){
_root.mapa.A + i;
}

namísto zápisu:

_root.mapa.A1;
_root.mapa.A2;
_root.mapa.A3;
_root.mapa.A4;
_root.mapa.A5;

Samozřejmě to samo nic nevytvoří, ale ve scriptech, které používám, by mi to velice usnadnilo práci.
Sitnarf
Profil
jasně.

Buď přímo:

eval("_root.m1")._x;

Nebo pěkněji:

instance = eval("_root.m1");
insatnce._x;

MovieClip ti taky vrací třeba attachMovie:

instance = attachMovie(...);
instance._x;
Honzass
Profil
Re: Hanz
No zkusil jsem to udělat takto:

Actions for Frame1:
// NAČTENÍ PROMĚNNÝCH

myVars = new LoadVars();
myVars.onLoad = function() {
_root.mapa.meritko = this.meritko;
_root.mapa.posun = this.posun;
};
Cislo = Math.random();
myVars.load("prevod.txt?"+Cislo);

// POSUN OBJEKTU
_root.mapa.polohax = ((_root.mapa.posun._x)*(-4)+ 262);
_root.mapa.polohay = ((_root.mapa.posun._y)*(-4)+ 212);

A stále to nefunguje. Prostě potřebuju nahradit proměnnou posun názvem instance např.:
namísto
_root.mapa.polohax = ((_root.mapa.posun._x)*(-4)+ 262);
_root.mapa.polohax = ((_root.mapa.A43._x)*(-4)+ 262);
Honzass
Profil
Re Sitnarf:
díky, aspoň to je vyřešeno.
Toto téma je uzamčeno. Odpověď nelze zaslat.