Autor Zpráva
FlashManiac
Profil *
Cyao all,
prolistoval jsem příručku o programováni v AS2.0 prošel jsem i help, ale nikde jsme nanarazil na to, že by AS podporoval dvourozměrné pole, známé třeba z Delphi.. funguje to vůbec ve Flashi, pokud ano prosím o detaily, pokud ne, tak jakým způsobem se to obchází...
THX
Hanz
Profil
FlashManiac
Ve Flashi to je. Jaké detaily potřebuješ?
Zápis může vypadat třeba:

var pole=new Array(["neco","neco"],["neco","neco"],["neco","neco"]);
FlashManiac
Profil *
No abych ho mohl naplnit přes cyklus: např.


var pole=Array();

for(i=1;i<=10;i++){
for (j=1;i<=10;j++){
pole[i,j]=0;
}
}

a potom se na něj odkazuju standardně ?např. if(pole[1,5]==10){
//prikazy
}


právě, že jsem zkoušel stejny postup jako je popsany,ale když jsem si to chtěl otestovat, tak se mi pole jevilo jako undefined
THX za odpověď
DoubleThink
Profil *
pole[i,j]

správný zápis je pole[i][j]
FlashManiac
Profil *
Cyao all,
teď tu vidím, že DoubleThink něco přidal, ale je zajímavé, že když poli natvrdo přiřadím hodnotu, tak to jede viz:


var pole=new Array();

var i:Number;
var j:Number;
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
pole[i,j]=i*j;
trace("pole["+i+","+j+"]= "+pole[i,j]);
}
}
trace(pole[1,1]); //vytrasuje trojku
trace(pole[1,2]); //vytrasuje sestku
trace(pole[1,3]); //vytrasuje devitku
/*vubec nebere v potaz prvni index pole,
takze se na nej vubec nemuzu odkazat, pritom pokud mam to
trasovani v cyklu(viz) tak funguje normalne => absolutni
nechapacka, pls HELP!!!*/
if(pole[1,1]==1){
trace("OK1");//netrasuje, ulozil si do indexu [1,1] trojku
}
/*nepomaha ani kdyz si prvky pevne nadeklaruju viz*/
var pole=new Array([1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]);
/*pokud to do toho prvku ulozim natvrdo napr.: */
pole[1,1]=1;
/*a pak se zeptam:*/
if(pole[1,1]==1){
trace("OK2");
}
/*tak uz trasuje a je to OK,ale jiste uznate, ze to
jaxi neni to prave orechove, do dynamickych struktur
vlastne nepouzitelne, ale vubec nevim co s tim, protoze
nebudu preci inicializovat napr.250 prvku v poli

PLS HELP!!!!!!*/


jinak zkusm novou radu THX
Hanz
Profil
FlashManiac
Je to přesně tak jak napsal DoubleThink. Ten tvůj zápis je špatně a divím se, že to vůbec nějak funguje.
Proč se pořát snažíš používat ten zápis, když ti už bylo vysvětleno, že je to špatně?

Jo a pokuď jde o tvůj původní script tak ten je šptně taky. Správně je:
var pole = Array();

for (i=0; i<=10; i++) {
pole[i] = new Array();
for (j=0; j<=10; j++) {
pole[i][j] = 0;
}
}
FlasManiac
Profil *
No šlo jenom o to,že jsem tam ten svuj poslední příspěvek pichl až po tom,co jsem si přečetl DT comment(četl jsem ho až dnes XD). Jen jsem chtěl byste věděli, v čem teda byla chyba, ale stejně je zajímavý, že i když to napíšu špatně,ale natvrdo to přiřadím, tak ta hodnota tam je...

jen pro vysvětlení XD
Dikx za rady...
DoubleThink
Profil *
Stačí si uvědomit architekturu polí - nejde vlastně ani o vícerozměrné elementy. Je to obyčejné pole, které má ale místo prvků další pole.
Takto to může jít do nekonečna:


pole[i][j][k][l][m][n][...]
FlashManiac
Profil *
Ono to tím pádem ale vlastně ani není vícerozmrné pole v pravém slova smyslu, jeto jen pole vnořené do buňky vyššího pole.... Škoda jen, že to tu není jako např v Delphi, ale tohle se dá pochopit taky.. THX za vysvětlení
Toto téma je uzamčeno. Odpověď nelze zaslat.

0