Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-05-2006, 17:14   #1 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Question Loader-Script-Problem mit Event-Handler

Hi.

Ich dreh schon wieder mal voll am Rad und hab mich wahrscheinlich voll in die verkehrte Richtung verrannt.

Ich kapiers einfach nicht, warum das mit meinem Script micht funzt.

Wenn ich die die Schleife in dem Script auf einen Durchgang beschränke, dann funzt alles super, aber wenn ich alle 8 container laden möchte, dann killen sich die EventHandler gegenseitig, obwohl ich diese verschiedenen Instanzen zuordne.

WARUM??? *haarerauf*
Ich sitzt da jetzt schon den ganzen Tag da und kann einfach nicht mehr.

Bitte helft mir!
Angehängte Dateien
Dateityp: zip load_prob.zip (16,6 KB, 5x aufgerufen)
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 06-05-2006, 04:50   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das Nachladen mehrerer Bilder oder Filme solltest du nicht mit loadMovie sondern mit der MovieClipLoader-Klasse machen. Schau es dir mal in der Flash-Hilfe an.
  Mit Zitat antworten
Alt 08-05-2006, 08:01   #3 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Aber warum werden die Eventhandler gekillt?
Liegt es an der loadMovie-Funktion ??

Ich versuchs mal mit der Klasse.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 08-05-2006, 09:05   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das Problem liegt meist in der Schleife und dem onEnterFrame begründet. Nach Durchlaufen der Schleife ist der Schleifenzähler nicht mehr bekannnt, bzw. überschrieben worden. Dann finden die oEF-Handler ihre Objekte nicht wieder. Das Problem kannst du in deinem Fall nur umgehen, indem du den Schleifenzähler als Objektvariable deinen MCs und den oEF-Events mitgibst.

Allerdings ist die MovieClipLoader-Klasse einfacher zu erstellen und übersichtlicher durch ihre eigenen Methoden-Callbacks.
  Mit Zitat antworten
Alt 08-05-2006, 09:44   #5 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Fuck!

Ich checks net.
Ich hab noch nie mit so einer Klasse gearbeitet! *heul*

Kannst Du mir bitte helfen?
Ich muss das heute abgeben und kriegs nicht gebacken..

Vielen lieben Dank schon mal
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 08-05-2006, 11:18   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Schau in die Flash-Hilfe oder in die Sufu hier im Forum...
  Mit Zitat antworten
Alt 08-05-2006, 13:54   #7 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
So.

Die Bilder werden jetzt zwar alle geladen, aber es werden keine Werte zurückgegeben. Ich habe das Script jetzt wie folgt geändert:

PHP-Code:
function makeXML(){
    var 
rest:Number;
        
// Störende Leerzeichen ignorieren
    
xml_bilddaten.ignoreWhite true;
        
// XML-Datei einlesen 
    
xml_bilddaten.load("daten/wollmeise/galerie/bilddaten.xml");
        
// Lesevorgang, der einen Ladestatus übergibt
    
xml_bilddaten.onLoad = function(status) {
            
// Ladestatus abfragen
        
if (status && this.loaded) {
                
// Ausgabe des Ladestatus
            
trace(" !!! XML-Daten wurden vollstädig geladen !!!\r");
                
// Seitenanzahl berechnen
            
seitenanzahl int(xml_bilddaten.childNodes[0].childNodes.length 8);
            
rest xml_bilddaten.childNodes[0].childNodes.length 8;
            if(
rest>0){seitenanzahl+=1;}
            
loadPics();
        }else{
                
// Ausgabe eines Ladefehlers
            
trace(" !!! Die XML-Daten konnten nicht geladen werden !!!\r");
        }
    };    
};

    
// Funktion zum Laden von den Bildern in die Polaroids
function loadPics(){
        
// erstellt ein neues Listener-Objekt
    
var listener_mc = new MovieClipLoader();
        
// Ein leeres Objekt erstellen, das den Listener bekommen soll
    
loadListener = new Object();
    
    
loadListener.onLoadStart = function (ziel_mc){
        
trace ("\r*********Erste listener_mc-Instanz*********");
        
trace ("Laden in Movieclip begonnen . = " ziel_mc);
        var 
loadProgress listener_mc.getProgress(ziel_mc);
        
trace(loadProgress.bytesLoaded " = zu Beginn geladene Byte");
        
trace(loadProgress.bytesTotal " = Byte gesamt zu Beginn");
    }
    
    
loadListener.onLoadProgress = function (ziel_mcloadedBytestotalBytes){
        
trace ("*********Verlauf der ersten listener_mc-Instanz*********");
        
trace ("onLoadProgress() Callback in Movieclip " ziel_mc);
        
trace(loadedBytes " = Geladene Byte bei Verlauf Callback " );
        
trace(totalBytes " = Byte gesamt bei Verlauf Callback \n");
    }
    
    
loadListener.onLoadComplete = function (ziel_mc){
        
trace ("*********Erste listener_mc-Instanz*********");
        
trace ("Ladevorgang in Movieclip erfolgt = " ziel_mc);
        var 
loadProgress listener_mc.getProgress(ziel_mc);
        
trace(loadProgress.bytesLoaded " = Am Ende geladene Byte" );
        
trace(loadProgress.bytesTotal " = Byte gesamt am Ende=");
    }

    
loadListener.onLoadInit = function (ziel_mc){
        
trace ("*********Erste listener_mc-Instanz*********");
        
trace ("Movieclip = " ziel_mc " ist jetzt initialisiert");
            
// Jetzt eine beliebige Einrichtung vornehmen, zum Beispiel:
        
ziel_mc._width 100;
        
ziel_mc._width 100;
    } 

    
loadListener.onLoadError = function (ziel_mcerrorCode){
        
trace ("*********Erste listener_mc-Instanz*********");
        
trace ("FEHLERCODE = " Fehlercode);
        
trace ("Ladevorgang in Movieclip fehlgeschlagen = " ziel_mc "\n");
    } 

    
listener_mc.addListener(loadListener);
    for(var 
i=0;i<8;i++){
            
// Pfad zum aktuellen Polaroid erstellen
        
mc = eval("bild_"+(i+1));
            
// Dateipfad festlegen
        
datei "daten/wollmeise/galerie/"+xml_bilddaten.childNodes[0].childNodes[i].attributes.file;
            
// Titel übergeben
        
mc.titel xml_bilddaten.childNodes[0].childNodes[i].attributes.titel;
            
// Dateien an ihre Zielorte laden.
            // lädt in Movieclips - Zeichenfolgen als Zielorte
        
listener_mc.loadClip(datei,mc.container);
        
//listener_mc.loadClip("http://www.einedomaene.irgendwo.com/eineAndereDatei.swf", "_level0.meinMC2");
    
}
    

Die Bilder werden geladen.
Aber die Trace-Ausgaben enthalten nur immer den Wert "0". Warum?
Und wie kann ich mit einem Listener einen Ladebalken ansprechen?
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 08-05-2006, 17:27   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
die Trace-Ausgaben enthalten nur immer den Wert "0".
Wie jetzt "immer"? Alle trace-Ausgaben deines Scriptes??
  Mit Zitat antworten
Alt 08-05-2006, 17:57   #9 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Ja, alle trace-Ausgaben in den Listener-Methoden (onLoadProgress, etc),

Ich habe nun das Script wie folgt geändert:

PHP-Code:
// ---------------------------------------------
// Variablen und Objekte deklarieren
// ---------------------------------------------
var xml_bilddaten = new XML();                // XML-Objekt, das die Bilddaten bekommt
var seitenanzahl 0;                        // Die Seitenanzahl wird aus den XML-Daten errechnet
var aktSeite 0;                            // Enthält immer die atuelle Seitanzahl
var bilderanzahl 0;                        // Die Summe aller Bilder
var seitencount 1;                        // Diese Variable wird immer die aktuelle Seite enthalten
var startcount 0;                            // Mit welchem Bild muss pro Seite begonnen werden?



// ---------------------------------------------
// Funktionen
// ---------------------------------------------
function makeXML(){
    var 
rest:Number;
        
// Störende Leerzeichen ignorieren
    
xml_bilddaten.ignoreWhite true;
        
// XML-Datei einlesen 
    
xml_bilddaten.load("daten/wollmeise/galerie/bilddaten.xml");
        
// Lesevorgang, der einen Ladestatus übergibt
    
xml_bilddaten.onLoad = function(status) {
            
// Ladestatus abfragen
        
if (status && this.loaded) {
                
// Ausgabe des Ladestatus
            
trace(" !!! XML-Daten wurden vollstädig geladen !!!\r");
                
// Seitenanzahl berechnen
            
bilderanzahl xml_bilddaten.childNodes[0].childNodes.length;
            
seitenanzahl Math.floor(bilderanzahl 8);
            
rest xml_bilddaten.childNodes[0].childNodes.length 8;
            if(
rest>0){seitenanzahl+=1;}
            
makeObjekts();
            
loadPics();
        }else{
                
// Ausgabe eines Ladefehlers
            
trace(" !!! Die XML-Daten konnten nicht geladen werden !!!\r");
        }
    };    
};

    
// Funktion zum Laden von den Bildern in die Polaroids
function makeObjekts(){
        
// erstellt ein neues Listener-Objekt
    
listener_mc = new MovieClipLoader();
        
// Ein leeres Objekt erstellen, das den Listener bekommen soll
    
loadListener = new Object();

    
loadListener.onLoadStart = function (img){
        
img._alpha 0;
        
img._parent.img_loader._visible true;
    }
    
loadListener.onLoadProgress = function (ziel_mcloadedBytestotalBytes){
        
trace ("onLoadProgress() Callback in Movieclip " ziel_mc);
        
trace(loadedBytes " = Geladene Byte bei Verlauf Callback " );
        
trace(totalBytes " = Byte gesamt bei Verlauf Callback \n");

        
trace(ziel_mc+" <-- ziel_mc");
        
trace(Math.round((bytesLoaded/bytesTotal)*100)+" <-- box");
        
ziel_mc._parent.img_loader.balken.gotoAndStop(prozent);
        
ziel_mc._parent.img_loader.prozentbox = (Math.round((bytesLoaded/bytesTotal)*100))+" %";
    }
    
loadListener.onLoadComplete = function (ziel_mc){
        
//trace ("Ladevorgang in Movieclip erfolgt = " + ziel_mc);        
    
}
    
loadListener.onLoadInit = function (img){
        
trace(img);
            
// Jetzt eine beliebige Einrichtung vornehmen
        
if(img._height img._parent.chg._height && img._width img._parent.chg._width){
                
// Bildgröße an das "chg"-Objekt anpassen
            
skalierung img._parent.chg._height img._height 50;
            
img._xscale _yscale skalierung;
                
// Bild auf der y-Achse am "chg"-Objekt ausrichten
            
img._y img._parent.chg._y;
                
// Bild auf der x-Achse am "chg"-Objekt ausrichten
            
img._x img._parent.chg._x-(img._width-img._parent.chg._width)/2;
        }else{
                
// Bildgröße an das "chg"-Objekt anpassen
            
skalierung img._parent.chg._height img._height 100;
            
img._xscale img._yscale skalierung;
                
// Bild auf der y-Achse am "chg"-Objekt ausrichten
            
img._y img._parent.chg._y;
                
// Bild auf der x-Achse am "chg"-Objekt ausrichten
            
img._x img._parent.chg._x-(img._width-img._parent.chg._width)/2;
        }
        
img._parent.img_loader._visible false;
        
fade_mc(img,"ein",25);
    } 
    
listener_mc.addListener(loadListener);
};

    
// BildladeFunktion
function loadPics(){
    var 
st startcount;
    var 
st;
    var 
sc:String;
    var 
sa:String;
    for(
i=0;i<8;i++){
            
// Pfad zum aktuellen Polaroid erstellen
        
var mc = eval("bild_"+(i+1));
        
trace("st = "+st+" | i = "+i+" | g = "+g+" | bild= "+mc);
            
// Dateipfad festlegen
        
var datei "daten/wollmeise/galerie/"+xml_bilddaten.childNodes[0].childNodes[st].attributes.file;
            
// Info zum Bild auslesen
        
var info xml_bilddaten.childNodes[0].childNodes[st].attributes["info_"+_level0.language];
            
// Titel übergeben
        
var titel xml_bilddaten.childNodes[0].childNodes[st].attributes.titel;
            
// Dateien an ihre Zielorte laden.
            // lädt in Movieclips - Zeichenfolgen als Zielorte
        
listener_mc.loadClip(datei,mc.container);
            
// Schaltfläche die richtigen Werte übergeben
        
mc.sf_bild.nummer i+1;
        
mc.sf_bild.rahmen mc.rahmen;
        
mc.sf_bild.datei datei;
        
mc.sf_bild.titel titel;
        
mc.sf_bild.info info
            
// Schaltfläche Funktionen zuweisen
    
setBildSFsFunc();
    
st++;
    }
        
// Schaltflächenfarben zurücksetzen
    
resetSFs(1);
        
// Erstes Bild in das große Polaroid übergeben
    
var datei_g "daten/wollmeise/galerie/"+xml_bilddaten.childNodes[0].childNodes[g].attributes.file;
    var 
info_g xml_bilddaten.childNodes[0].childNodes[g].attributes["info_"+_level0.language];
    var 
titel_g xml_bilddaten.childNodes[0].childNodes[g].attributes.titel;
    
setBigPolaroid(datei_g,titel_g,info_g);
        
// Seiten-Info anzeigen
    
if(seitencount<10){sc "0"+seitencount;}
    if(
seitenanzahl<10){sa "0"+seitenanzahl;}
    if(
_level0.language "deutsch"){seiteninfo "Seite "+sc+" von "+sa;}
    else if(
_level0.language "englisch"){seiteninfo "site "+sc+" of "+sa;}
};

    
// Function zum Füllen des grossen Polaroids
function setBigPolaroid(f,t,i){
        
// Text übergeben (Kommt von der Funktion setBildSFsFunc)
    
bild_gross.info "\r" i;
    
listener_mc.loadClip(f,bild_gross.container);
}

// ---------------------------------------------
// Schaltflächenfunktionen
// ---------------------------------------------
    // Die Schaltflächen mit Functionen belegen
function setBildSFsFunc(){
    for(var 
i=1;i<=8;i++){
        var 
mc = eval("bild_"+i);
        
mc.sf_bild.onRollOver = function(){farb_wechsel(rahmen,"990000");};
        
mc.sf_bild.onRollOut = function(){farb_wechsel(rahmen,"776956");};
        
mc.sf_bild.onPress = function(){resetSFs(this.nummer);setBigPolaroid(this.datei,this.titel,this.info);};
    }
};

    
// Farben der SFs zurücksetzen
function resetSFs(aktSF){
    var 
mc;
    for(var 
i=1;i<=8;i++){
            
// Pfad zum aktuellen Polaroid erstellen
        
mc = eval("bild_"+i);
        
farb_wechsel(mc.sf_bild.rahmen,"776956");
    }
    
setBildSFsFunc();
    
mc = eval("bild_"+aktSF);
    
delete mc.sf_bild.onRollOver;
    
delete mc.sf_bild.onRollOut;
    
delete mc.sf_bild.onPress;
    
farb_wechsel(mc.sf_bild.rahmen,"990000");
};

sf_weiter.onRollOver = function(){farb_wechsel(this,"990000");};
sf_zurueck.onRollOver = function(){farb_wechsel(this,"990000");};
sf_weiter.onRollOut = function(){farb_wechsel(this,"009C82");};
sf_zurueck.onRollOut = function(){farb_wechsel(this,"009C82");};
sf_weiter.onPress = function(){
    
seitencount+=1startcount+=8;
    if(
seitencount==seitenanzahl){this._visible false;}
    if(
seitencount>1){sf_zurück._visible true;}
    
loadPics();
}
sf_zurueck.onPress = function(){
    
seitencount-=1startcount-=8;
    if(
seitencount==1){this._visible false;}
    if(
seitencount<seitenanzahl){sf_weiter._visible true;}
    
loadPics();
}

// ---------------------------------------------
// Ausführen
// ---------------------------------------------
sf_zurueck._visible false;
makeXML(); 
Jetzt hab ich folgendes Problem ZUSÄTZLICH.
Auf der 2. Seite, wenn die ChildNodes 9 - 15 geladen werden, werden
die Bilder nicht mehr Skaliert.
Wenn ich aber weiter auf die Seite 3 klicke, wenn die Nodes 16 - 24 geladen werden, werden sie wieder richtig skaliert.
Jetzt kapier ich bald gar nichts mehr.

Bitte Hilfe.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2006, 09:30   #10 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Kann mir keiner mit meinem Problem mehr helfen?
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2006, 09:36   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Grenz den Bug erst einmal ein. Hat doch keiner Zeit, sich durch diese Code-Wüste durchzuarbeiten. Flash hat einen Testmodus, einen Debugger und einen Einzelschrittsimulator.
  Mit Zitat antworten
Alt 09-05-2006, 10:24   #12 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Ah ja. Mal sehn. Danke.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2006, 10:41   #13 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Mit dem Debugger komm ich ja überhaupt nicht weiter! Der verwirrt mich ja noch mehr.

Shit! Trotzdem danke.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele