Pętla - zmienna w pętli - odczytanie zmiennej z pętli |
Autor |
Wiadomość |
Szymciosek
Ekspert

Pomógł: 22 razy Wiek: 33 Dołączył: 20 Lut 2009 Posty: 248 Skąd: Świdnica
|
Wysłany: Pią 22 Sty, 2010 15:33 Pętla - zmienna w pętli - odczytanie zmiennej z pętli
|
|
|
Próbuję zrobić ładowanie zdjęć do danego loadera, ładowanie odbywa się w pętli, dalej dodaje listener CLICK po czym wywołanie funkcji jakiejś klik();
na początku zadeklarowałem zmienną "public var redi:XMLList;"
Później w pętli nadaje tej zmiennej wartości: "redi = myXML.hit[i].@redirect;"
I tu zaczynają się schody, ponieważ odczytując zmienną w funkcji klik(); odczytuje mi tylko pierwszą linię z XML:
Kod: | <?xml version="1.0" encoding="utf-8"?>
<hits columns="4" widthmini="100" heightmini="100" space="10">
<hit image="1.JPG" label="label" redirect="http://www.wp.pl" />
<hit image="2.JPG" label="label2" redirect="http://www.onet.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.wrzuta.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.forumpc.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.nasza-klasa.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.youtube.com/" />
<hit image="3.JPG" label="label3" redirect="http://www.demotywatory.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.speedyshare.com" />
<hit image="3.JPG" label="label3" redirect="http://www.google.pl" />
<hit image="3.JPG" label="label3" redirect="http://www.wp.pl" />
</hits> |
Chcę aby po naciśnięciu na mini1 wyskakiwało - wp.pl, mini2 - onet, mini3 wrzuta... itd.
Co prawda wiem, że forum swisha, ale mam problem może zna ktoś rozwiązanie. |
|
|
|
 |
eden
Ekspert

Pomógł: 35 razy Dołączył: 04 Sty 2008 Posty: 265 Skąd: warsaw
|
Wysłany: Pią 22 Sty, 2010 18:10
|
|
|
zamiast for sprubuj foreach
costakiego:
Kod: | var redi:XMLList = root.node.node;
for each (var Element:XML in redi) {
trace(Element);
} |
|
|
|
|
 |
Szymciosek
Ekspert

Pomógł: 22 razy Wiek: 33 Dołączył: 20 Lut 2009 Posty: 248 Skąd: Świdnica
|
Wysłany: Pią 22 Sty, 2010 18:32
|
|
|
Kod: |
for(i = 0; i < total; i++) {
var miniatury:XMLList = myXML.hit[i].@image;
redi = myXML.hit[i].@redirect;
var mloader = new Loader();
mloader.load(new URLRequest(miniatury));
addChild(mloader);
mloader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
mloader.contentLoaderInfo.addEventListener(Event.INIT, thumbInit);
mloader.name = "mini"+i;
mloader.x = Math.floor(i / kolumny) * (odstepy + width_mini);
mloader.y = Math.floor(i % kolumny) * (odstepy + height_mini);
//targetURL = new URLRequest(redi);
mloader.addEventListener(MouseEvent.CLICK, klik);
mloader .addEventListener(MouseEvent.MOUSE_OVER, over);
mloader.addEventListener(MouseEvent.MOUSE_OUT, out)
}
|
Tak wygląda moja pętla, ale jak zmieniam tam na początku for (...) na twoje for each(var Element:XML in redi) {}
to wywala błędy:
Kod: |
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2035: Nie znaleziono adresu URL.
|
Edit:
Po wywaleniu z pętli linijki
mloader.load(new URLRequest(miniatury));
odpala się normalnie, ale wiadomo, nic się nie pojawia...
Prosiłbym też o wyjaśnienie działania for each, skąd się bierze, jak pobiera dane itp. |
|
|
|
 |
eden
Ekspert

Pomógł: 35 razy Dołączył: 04 Sty 2008 Posty: 265 Skąd: warsaw
|
Wysłany: Sob 23 Sty, 2010 17:58
|
|
|
for each to taka petla dla elementow obiektowych.
Niemam aktualnie flasha wiec niemoge ci dokładnie tego napisać. Sprubuj w tym
mloader.load wskazac na zmienna z pętli cos typu:
mloader.load(new URLRequest(Element)); |
|
|
|
 |
Szymciosek
Ekspert

Pomógł: 22 razy Wiek: 33 Dołączył: 20 Lut 2009 Posty: 248 Skąd: Świdnica
|
Wysłany: Sob 23 Sty, 2010 18:30
|
|
|
mloader.load(new URLRequest(Element));
Error #2044: Nieobsługiwane IOErrorEvent:. text=Error #2124: Typ wczytanego pliku jest nieznany.
a dokładniej:
Kod: |
public function callThumbs():void {
/*for (var i:Number = 0; i < total; i++)*/
for each (var Element:XML in redi) {
var miniatury:XMLList = myXML.hit.@image;
//redi = myXML.hit[i].@redirect;
var mloader = new Loader();
mloader.load(new URLRequest(Element));
addChild(mloader);
mloader.name = i;
mloader.x = Math.floor(i / kolumny) * (odstepy + width_mini) + 10;
mloader.y = Math.floor(i % kolumny) * (odstepy + height_mini) + 10;
//trace(Element);
targetURL = new URLRequest(redi);
mloader.addEventListener(MouseEvent.CLICK, klik);
mloader .addEventListener(MouseEvent.MOUSE_OVER, over);
mloader.addEventListener(MouseEvent.MOUSE_OUT, out)
}
}
|
[ Dodano: Nie 24 Sty, 2010 14:56 ]
Problem przekierowania rozwiązany
w funkcji klik dałem:
Kod: |
public function klik(e:MouseEvent):void {
var redi = myXML.hit[e.target.name].@redirect;
var targetURL = new URLRequest(redi);
navigateToURL(targetURL, "_self");
}
|
|
|
|
|
 |
|