Autor | Zpráva | ||
---|---|---|---|
peke Profil * |
#1 · Zasláno: 7. 3. 2007, 10:46:32
Zdravím,
potřebuji vytvořit mapu světa s kontinety a státy, a jde mi o to, aby bylo možné po přihlášení se do uživatelského profilu ( XML ) měnit barvu jednotlivých států v závislosti na návštěvnosti daného státu. Příklad: pan XXX se naloguje do svého profilu a v minulosti navštívil např. asii ( což bude zaznamenáno v XML souboru ) a ve flashové mapě se tento původně bílý kontinent zbarví do červena ( již navštívený ). Takže, je potřeba dostat z XML nějaké proměnné do ActionScriptu ( barva, stat ) z těchto proměnných vytvořit podmínky ( jestli je barva zelená - navštívil asii jen jednou, oranžová - 2x, atd... ) a název kontinentu ( státu ). Zní to jednoduše, ale nevím si rady s tím XML. Pokud někdo máte nápad jak na to, prosím o radu. |
||
Časová prodleva: 3 dny
|
|||
XXX Profil |
#2 · Zasláno: 10. 3. 2007, 09:40:25
Mooc pekny priklad :-D V Kazdem pripade si tady nevystacis jen s flashem a XML,ale budes potrebovat napr. jeste PHP na ukladani do toho XML, protoze Flash umi jen nacitat data a ne ukladat. Reseni tvojeho nacitani je jednoduche. Ve Flashi si jednotlive staty (movieClipy) pojmenuj napr. takhle: stat1_mc, stat2_mc, stat3_mc, .... az statX_mc. Kazdeme z nich priradis promenou cislo, ktera bude obsahovat prave cislo tohohle statu:
ted uz das napr do udalosti onRelease kazdeho z techto movieClipu skriptik, ktery bude napr do pole ukladat cisla tech MC no a XML bude na zacatku prazdne, protoze zatim neklikl uzivatel na zadny stat. nebo spis by mohlo vypadat takhle:
oznacene staty budes ukladat do XML napr takhle:
takhle budes postupne pridavat dalsi staty, takze to nekdy pozdeji bude vypadat treba takhle:
pri spusteni tvojeho SWF nactes XML do vicerozmerneho pole, ktere bude vypadat takhle: poleStaty = [[10,1],[48,2],[76,4], ... ,[14,8]]; Nakonec zase pomoci cyklu nastavis vsem statum jejich barvu pomoci podminky if .. else if .... for(var i:Number = 1; i<= X; i++){ var nazevStatu:String = "stat"+i+"_mc"; var cisloBarvy:Number = 0; for(var a:Number = 1;a<= poleStaty.length;a++){ //tento cyklus delas pro vsechny prvky pole if(i == poleStaty[a][0]){ //pokud je cislo statu rovno cislu statu v poli cisloBarvy = poleStaty[a][1]; //nastavi se cisloBarvy na cislo u daneho statu v poli } } //ted uz se jen nastavi pomoci podminek barva statu na barvu, jakou potrebujes: if(cisloBarvy == 0){ //tady uz si nastavis barvu, jak potrebujes ;) }else if(cisloBarvy == 1){ }else if(cisloBarvy == 2){ } ... else if(cisloBarvy > 20){ } } |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0