SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
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");
        }
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.09 sekundy. Zapytań do SQL: 11