Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-11-2005, 15:54   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 20
Exclamation var ergibt in funktion undefined

hi, habe ein problem, das ich aber nicht gelöst bekomme:

vor dem onRelease ist meine globale variable definiert. in der funktion vom onRelease bekomme ich nur noch "undefined"...


vielleicht kann mir jemand erklären warum genau das jetzt undefined ergibt
naja und wie ich das Problem jetzt lösen kann?

wäre ganz toll wen da jemand ne antwort hätte

thx

flo




PHP-Code:
stop();            

navname = new TextFormat();
navname.font "Arial10Bold";
navname.color 0xFFFFFF;
navname.size 10;
navname.bold true;

navcat = new TextFormat();
navcat.font "Arial10";
navcat.color 0xFFFFFF;
navcat.size 10;


xml_obj = new XML(); // neues xml-objekt erstelln
xml_obj.ignoreWhite true//leerzeichen im xml-objekt ignorieren
xml_obj.load("menue.xml"); //xml-objekt mit xml-datei füttern



xml_obj.onLoad = function(status) { //schau zu wie das xml-objekt futtert...
    
if (status) { //wenn es zuendegefuttert hat:
                 
        
_global.xml_link = []; //leeren array erstellen
        
_global.xml_name = []; //leeren array ertellen
        
_global.xml_cat = []; //leeren array ertellen
        
        
xml_length xml_obj.firstChild.childNodes.length;
        
        for (var 
i=0i<xml_lengthi++) {
        
//^ einmal alle folgeknoten des ersten Knotenpunktes durchgehen:
            
            
_global.xml_link[i] = xml_obj.firstChild.childNodes[i].attributes.link;
            
//^ Den eintrag für das atribut bild in xml_bild array übernehmen
            
_global.xml_name[i] = xml_obj.firstChild.childNodes[i].attributes.name;
            
//^ Den eintrag für das atribut name in xml_name array übernehmen            
            
_global.xml_cat[i] = xml_obj.firstChild.childNodes[i].attributes.cat;
            
//^ Den eintrag für das atribut cat in xml_cat array übernehmen
                                
            
navcontainer.attachMovie("navpoint""navpoint"+ii); //erstellt einen navpoint
            
navcontainer["navpoint" i]._y 35*i// navpoint y koordinate festlegen
            
navcontainer["navpoint" i]._x 0//navpoint x koordinate festlegen
            
            //textfield navtextname wird im navpoint erstellt und bekommt den jeweiligen 
            //eintrag im xml_name array zugewiesen, der text wird eingebettet und formatiert:
            
navcontainer["navpoint" i].createTextField("navtextname"5002212010); 
            
navcontainer["navpoint" i].navtextname.text _global.xml_name[i];
            
navcontainer["navpoint" i].navtextname.setTextFormat(navname);
            
navcontainer["navpoint" i].navtextname.embedFonts true;
            
            
//Textfield navtextcat wird im Navpoint erstellt und bekommt den jeweiligen 
            //Eintrag im xml_cat array zugewiesen, der Text wird eingebettet und formatiert:
            
navcontainer["navpoint" i].createTextField("navtextcat"40021612010); 
            
navcontainer["navpoint" i].navtextcat.text "Kategorie: " _global.xml_cat[i];
            
navcontainer["navpoint" i].navtextcat.setTextFormat(navcat);
            
navcontainer["navpoint" i].navtextcat.embedFonts true;
            
            

            
//RollOver Effekt für navpoint
            
navcontainer["navpoint" i].onRollOver = function (){
                
this.gotoAndStop (2);
            };
            
            
//RollOut Effekt für navpoint
            
navcontainer["navpoint" i].onRollOut = function (){
                
this.gotoAndStop (1);
            };
            
            
            
trace (_global.xml_link[i]); // HIER WIRD DIE VARIABLE KORREKT ANGEZEIGT
            //OnRelease Effekt für navpoint
            
navcontainer["navpoint" i].onRelease = function (){
                
trace (_global.xml_link[i]); //ABER HIER GIBT "UNDEFINED"
                
extern_laden(_global.xml_link[i]); // UND AUCH IN DER FUNKTION ERHALTE ICH NUR "UNDEFINED"

            
};
            

            
        };
        
gotoAndStop(2);
    };
};




//---------------------------------------------------------




extern_laden = function (link) {
    
trace(link)
    
    
contentcontainer.removeMovieClip(holder);
    
contentcontainer.createEmptyMovieClip("holder"5000);
      
contentcontainer.holder.loadMovie(link);
    
contentcontainer.createEmptyMovieClip("control"5999);
    
control.onEnterFrame = function() {
                 
        if (
contentcontainer.holder.getBytesLoaded()>=4) {
                    
            
gesamt  contentcontainer.holdergetBytesTotal();
            
bereits contentcontainer.holder.getBytesLoaded();
            
traceprozent+"% geladen");
            
prozent Math.ceil((bereits/gesamt)*100);
                
            if (
prozent == 100) {
                         
                
removeMovieClip(control);
                
delete this.onEnterFrame;
            };
        };
    };
}; 

Geändert von Lichtl (23-11-2005 um 16:28 Uhr)
Lichtl ist offline   Mit Zitat antworten
Alt 23-11-2005, 16:35   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
deine laufvariable i ist in dem event ganz bestimmt nicht bekannt.
so z.b. sollte es gehen

navcontainer["navpoint" + i].i=i;
navcontainer["navpoint" + i].onRelease = function (){
trace (_global.xml_link[this.i]);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-11-2005, 16:42   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 20
nein, hat leider nicht geklappt. aber wenn ich mir mit

navcontainer["navpoint" + i].onRelease = function (){
trace (i);
};

tracen lasse wird i richtig angezeigt...

Geändert von Lichtl (23-11-2005 um 16:46 Uhr)
Lichtl ist offline   Mit Zitat antworten
Alt 23-11-2005, 16:58   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..tracen lasse wird i richtig angezeigt..."
nein.
onRelease ist ein event, das ausgelöst wird, lange nachdem deine for schleife abgearbeitet wurde. da ist die variable i schon längst gestorben.

so wie ich es aufgeschrieben habe muss es gehen, andernfalls stimmt vorher schon was nicht. funtioniert das onRollOver/onRollOut ..

ist das da?

trace(navcontainer["navpoint" + i]);


lade mal eine muster.fla mit deinem xml hoch. damit man mal was testen kann.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-11-2005, 17:14   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 20
k, habs ma kurz hochgeladen

kannst dir ja mal die file angucken.. aber onRollOver OnRollOut funzt einwandfrei, ja.

http://underemotion.com/eins/dev/menue.fla

http://underemotion.com/eins/dev/menue.xml

Geändert von Lichtl (23-11-2005 um 17:31 Uhr)
Lichtl ist offline   Mit Zitat antworten
Alt 23-11-2005, 18:22   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 20
hmm...
weiß niemand eine lösung?

wisst ihr sont vielleicht ne möglichkeit das problem geschickt zu umgehen?
Lichtl ist offline   Mit Zitat antworten
Alt 23-11-2005, 20:52   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
langsam. niemand kann den ganzen tag im forum sein ...

"..tracen lasse wird i richtig angezeigt..."
--> er gibt immer nur 13 aus. was soll den daran richtig sein?

xml --> tolles beispiel, alle links heissen gleich :-( so kann man super testen. da mal bild1 bis bild13 durchnummerieren.

die traces in extern_laden machen auch wenig sinn und stöhren hier nur, löschen!

hab genau das geändert, so, wie ich dir das geschrieben hatte und
ES GEHT PRIMA !!!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-11-2005 um 20:53 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 23-11-2005, 21:46   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 20
Thumbs up

gott, manchmal sieht man den wald vor läuter bäumen nicht. sorry, bin wohl n bisschen mit den trace ergebnisen durcheinander gekommen, das projekt ist nganz schöner broken für mich.
auf jedenfall dankesehr
ok, jetzt wei ich bescheid.
Lichtl ist offline   Mit Zitat antworten
Alt 24-11-2005, 12:49   #9 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: phobos
Beiträge: 25
Ich hab ein ähnliches Problem, weswegen ich jetzt nicht
extra 'nen neuen Thread aufmachen wollte.

Ich hab einen Flash-Movie und in Bild 35 kommt folgende
AS-Anweiung:
Code:
onEnterFrame = function() {
		var min:Number = 90;
		trace(min);
}
Aber anstelle von '90' bekomm ich bloß 'undefined' aus-
gegeben :-/

Ändere ich den Code allerdings ab in
Code:
onEnterFrame = function() {
		var min = 90;
		trace(min);
}
Dann funktioniert es!
Und ich versteh das einfach nicht, da ich in einem an-
deren Movie die obere Variante verwende, welche dort
auch fehlerfrei funktioniert -_-°

Weiss vielleicht jemand, woran das liegen könnte?


ceno
cenobite ist offline   Mit Zitat antworten
Alt 24-11-2005, 21:07   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
var min:Number = 90;
das ist die schreibweisse für AS2, wenn du das benutzen willst, dann solltest du auch AS2 ausgewählt haben. in "einstellungen für veröffentlichungen", auf den flash-reiter klicken
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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 08:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele