Autor | Zpráva | ||
---|---|---|---|
Zeree Profil * |
#1 · Zasláno: 16. 3. 2008, 11:10:18
mam cyklus for (i=0; i<10; i++) ,a pole[10] ..naplnene prvkami ako napr. "a" ,"b" ,"c","d"... ,a nazov objektu je "meno"
potrebujem dosiahnut nastavenia premennych s nazvami ktore su ulozene v poli: eval("_root."+meno).a = 1; eval("_root."+meno).b = 1; eval("_root."+meno).c = 1; eval("_root."+meno).d = 1; ... lenze ako prinutit flash aby za evalom (a za bodkou) dal premennu ktora sa nazyva tak ako je v poli: "pole[i]" -staci mi zapis ako to urobit pre jeden -predpokladal som ze to bude : eval("_root."+meno).eval(pole[i]) //lenze flash to vyhodnocuje ako zly zapis Dakujem za akykolvek navrh ako to sfunkcnit. |
||
Steve Profil |
#2 · Zasláno: 16. 3. 2008, 12:10:20
a co takhle:
eval("_root." + meno + "." + pole[i]) = neco |
||
Zeree Profil * |
#3 · Zasláno: 16. 3. 2008, 14:00:26
JJ dobry napad , ale praveze aj to hlasi chybu :
Left side of assignment operator must be variable or property. ..treba to odskusat , ja som skusal vela kombinaciji avsak ziadna nesla :( |
||
FlashManiac Profil |
#4 · Zasláno: 16. 3. 2008, 15:01:23
posli zdrojak.. z toho tveho vykladu jsem ponekud jelen..nevim co je a neni objekt a kde je umistene to pole atd.
|
||
Zeree Profil * |
#5 · Zasláno: 16. 3. 2008, 16:02:51
Vytvoril som nazorny priklad ,kedze moj kod obsahuje velky pocet premennych a zamerani ,nechcem ta popliest ,ale princip je takyto:
meno = "mc"; eval("_root."+meno).zivot = 0; eval("_root."+meno).sila = 0; eval("_root."+meno).energia = 0; eval("_root."+meno).obnova = 0; stats = new Array("zivot","sila","energia","obnova") ; for (i=0; i<stats.length; i++) { //kazdy stat by sa mal navysit o "i" ,takze by jednotlive artributy mali byt 0,1,2,3 //eval("_root."+meno).stats[i] += 10; //predpokladany ,ale nefunkcny kod //<?> miesto pre potrebny kod } //natvrdo vypisanie trace(_root.mc.zivot); //vypis by mal byt 0 trace(_root.mc.sila); //vypis by mal byt 1 trace(_root.mc.energia);//vypis by mal byt 2 trace(_root.mc.obnova); //vypis by mal byt 3 |
||
Zeree Profil * |
#6 · Zasláno: 16. 3. 2008, 16:04:52
// ten jeden riadok by nebol 10 ale "i" ,ved ide o princip //eval("_root."+meno).stats[i] += i;
//pardon ze for neodsadilo , som tam dal "taby" a tie to vynechalo |
||
Zeree Profil * |
#7 · Zasláno: 16. 3. 2008, 17:10:15
Prisiel som na to {po 1 hodine hladania}
eval ako taky nedovoluje zlucovanie odkazu za nim s premennymi ,to znamena v skratke ze to co je za evalom moze byt len to co je napisane ,a nemoze to byt dynamicky za behu dotvarane napr. polom ,je tomu tak preto pretoze kompilator riadok kde je eval vyhodnoti ako celok s tym co je za zatvorkou , je to logicke lebo v case prekladania ,ziadne pole este nieje ani vytvorene v Ramke ,ide to obist tymto sposobom zadavania : set ("_root."+meno+"."+stats[i], 200); //miesto 200 moze byt "i" toto vyhodnoti prvu cast , ktoru zluci ,ked je zlucena az potom ju zameriava a nastavuje , kdezto eval robi to iste iba pre to co je v zatvorkach ,toto to robi takpovediac aj pre to za zatvorkou ,s tym ze sa to najprv prelozi takze je mozne zadat dynamicky napr. pole. ... Moc diky za vsetku snahu ,prajem pekny den. |
||
XXX Profil |
#8 · Zasláno: 16. 3. 2008, 17:11:06
Zeree
Nechapu, proc pouzivas funkci eval, je v 99% naprosto zbytecna a jde to vzdycky vyresit jinak. Tady mas sve reseni: meno = "mc"; _root[meno].zivot = 0; _root[meno].sila = 0; _root[meno].energia = 0; _root[meno].obnova = 0; stats = new Array("zivot", "sila", "energia", "obnova"); for (i=0; i<stats.length; i++) { _root[meno][stats[i]] += i; } trace(_root.mc.zivot); // 0 trace(_root.mc.sila); // 1 trace(_root.mc.energia); // 2 trace(_root.mc.obnova); // 3 |
||
Zeree Profil * |
#9 · Zasláno: 16. 3. 2008, 18:33:34
mas pravdu , ide to aj tak , o sposobe _root[meno][stats[i]] += i; som vobec nevedel , hoci _root[] vyuzivam
Ano ,ide o pekny a rychly zapis ,lenze ked obsahuje kod privela kombinaciji "zlucovania" niecoho s textom ,tj. sa za urcitych podmienok pridava k "meno" -dalsi kod ,napr. _root.meno5_2_image[5] ,{v tomto ide o fakt skaredy zapis ,ktory by sa zle riesil cez _root[] //nehovorim ze by to neslo ,ale skratka na eval som si zvykol ,pretoze ma intuitivny zapis ,a funguje stale ,bez zmien v zapise , {kedze vyuzivam viac zapisov , pre vsetky eval funguje {pripadne staci zmenit par pismen} ,avsak _root[] by bol v niektorych pripadoch zapisany odlisne pripadne kombinaciou napriklad neviem si predstavit ako by som moj vysledny zapis zapisal "lahko" pomocou _root[]-ov set("_root."+meno+"."+stats[j], get("_root."+meno+"."+stats[j])+get("_root.item_" + index + "_"+stats[j])); ano nieco by sa tam zjednodusilo ,konkretne zmena getu ,neviem ,z mojho pohladu by to cez _root[] bolo skaredsie a dlho sa zamyslat nad spravnostou ,mozno sa mi to zda aj pre to ze som odjakziva pouzival eval takze som na neho zvyknuty. |
||
Zeree Profil * |
#10 · Zasláno: 16. 3. 2008, 18:39:53
a neviem ci ide zlucit cez _root[] daco take aby bolo mozne zamerat daco taketo: _root.a__0
_root[meno+"__"+i] ? asi takto nie , neviem , pripadne necham si poradit ,ak je sposob ako. |
||
Časová prodleva: 16 let
|
0