Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-05-2006, 01:48   #1 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 4
Dynamisches getURL mit XML

Hallo,

ich habe folgendes Problem:

Ich erstelle aus einer xml herraus dynamische Buttons die weiterverlinken sollen.

Soweit, so gut!

Ich gebe meiner Variablen "the_url" immer den richtigen Wert (der trace is grün markiert und gibt richtig aus). Wenn man jetzt aber auf den Button klickt wird immer die Url des letzten XML Eintrags angesteuert. Das ist der letzte Wert den die Variable animmt wenn die Buttons generiert werden (und wohl zur Laufzeit immer noch hat).

Wie biege ich den den onPress/onRelease hin dass er mich zu der Seite führt die ich im xml definiert habe und nicht zu der Adresse die zuletzt als "the_url" gesetzt wurde.

Ich habe die markanten stellen farbig markiert.

Ich hoffe Ihr könnt mir dabei weiterhelfen

Vielen Dank schonmal





Code:
      xmlfile = "a.xml";
      xmlMenu = new XML();
      xmlMenu.ignoreWhite = true;
      xmlMenu.load(xmlfile);
      xmlMenu.onLoad = function(success) 
      {
        counter = 0;
      	if (success) {
			createEmptyMovieClip("Clip", 1, {_x:0, _y:0});
			 
			for (var aNode:XMLNode = xmlMenu.firstChild; aNode != null; aNode=aNode.nextSibling)
			{
				for (var bNode:XMLNode = aNode.firstChild; bNode != null; bNode=bNode.nextSibling)
				{
					counter++;
					id = "id"+counter;
					
					the_url = bNode.attributes.url;
					the_text = bNode.attributes.name;
					
					Clip.attachMovie("Bezeichner1",id, counter*100);
					Clip[id]._y= (counter * 46);
					Clip[id]._x= (70);
					trace(the_url +" <> "+ the_text); //funktioniert wunderbar
                                        Clip[id].onPress = function(){getURL(the_url, "_blank");} //immer die gleiche :/
				}

			}
		}
	};

Geändert von CatzHoek (12-05-2006 um 02:22 Uhr)
CatzHoek ist offline   Mit Zitat antworten
Alt 12-05-2006, 02:05   #2 (permalink)
Banned
 
Registriert seit: Apr 2006
Beiträge: 246
vielleicht so? indem du für jeden clip ein listener object in einem array erstellst?

ungetestet

PHP-Code:
      xmlfile "a.xml";
      
xmlMenu = new XML();
      
xmlMenu.ignoreWhite true;
      
xmlMenu.load(xmlfile);
      
xmlMenu.onLoad = function(success
      {
        
counter 0;
          if (
success) {
          var 
ClipListenerArray = new Array();
          
            
createEmptyMovieClip("Clip"1, {_x:0_y:0});
             
            for (var 
aNode:XMLNode xmlMenu.firstChildaNode != nullaNode=aNode.nextSibling)
            {
                for (var 
bNode:XMLNode aNode.firstChildbNode != nullbNode=bNode.nextSibling)
                {
                    
counter++;
                    
id "id"+counter;
                    
                    
the_url bNode.attributes.url;
                    
the_text bNode.attributes.name;
                    
                    
Clip.attachMovie("Bezeichner1",idcounter*100);
                    
Clip[id]._y= (counter 46);
                    
Clip[id]._x= (70);
                    
trace(the_url +" <> "the_text);
                    
                    
                 
ClipListenerArray[id] = new Object();
ClipListenerArray[id].onPress = function(){getURL(the_url"_blank");}
 
Clip[id].addListener(ClipListenerArray[id]); 
                    
                }

            }
        }
    }; 
ChickenWing ist offline   Mit Zitat antworten
Alt 12-05-2006, 02:11   #3 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 4
Hmmm, da tuts sich leider noch nichts.
CatzHoek ist offline   Mit Zitat antworten
Alt 12-05-2006, 02:31   #4 (permalink)
Banned
 
Registriert seit: Apr 2006
Beiträge: 246
vielleicht mit delegates?

PHP-Code:
xmlfile "a.xml";
      
xmlMenu = new XML();
      
xmlMenu.ignoreWhite true;
      
xmlMenu.load(xmlfile);
      
xmlMenu.onLoad = function(success
      {
        
counter 0;
          if (
success) {
          var 
ClipListenerArray = new Array();
          
            
createEmptyMovieClip("Clip"1, {_x:0_y:0});
             
            for (var 
aNode:XMLNode xmlMenu.firstChildaNode != nullaNode=aNode.nextSibling)
            {
                for (var 
bNode:XMLNode aNode.firstChildbNode != nullbNode=bNode.nextSibling)
                {
                    
counter++;
                    
id "id"+counter;
                    
                    
the_url bNode.attributes.url;
                    
the_text bNode.attributes.name;
                    
                    
Clip.attachMovie("Bezeichner1",idcounter*100);
                    
Clip[id]._y= (counter 46);
                    
Clip[id]._x= (70);
                    
trace(the_url +" <> "the_text);
                    
                    
                 
ClipListenerArray[id] = new Object();
                 
                 
Clip[id].addEventListener("click"Delegate.create(Clip[id], function(){getURL(the_url"_blank")}));
                    
                }

            }
        }
    }; 
ich hoffe das hilft, ansonsten hat vielleicht jemand nen wacheren kopf heute nacht ich geh ins bett
ChickenWing ist offline   Mit Zitat antworten
Alt 12-05-2006, 02:38   #5 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 4
Zitat:
Zitat von ChickenWing
ich hoffe das hilft, ansonsten hat vielleicht jemand nen wacheren kopf heute nacht ich geh ins bett
Ich auch! Gut nacht!


Na, tut leider immer noch net. Vielleicht gehts ja morgen nach ner Runde schlaf plötzlich auf anhieb.
CatzHoek ist offline   Mit Zitat antworten
Alt 12-05-2006, 07:50   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 21
Hi

so wie ich das sehe ist "the_url" ja schon nicht mehr das was sie sein soll, wenn die Funktion aufgerufen wird.

speicher doch die url im clip zwischen

Clip[id].the_url = bNode.attributes.url

dann kannst du mit

Clip[id].addEventListener("click", Delegate.create(Clip[id], function(){getURL(this.the_url, "_blank")}));

die url auf rufen.

Ich hoffe es hilft dir weiter

Gruss
dial ist offline   Mit Zitat antworten
Alt 12-05-2006, 20:12   #7 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 4
Danke für die Hilfe, es lag wohl hauptsächlich an der unerfahrenheit weshalb das nicht so wirklich klappen wollte.

Hier der relevante Ausschnitt meine Lösung:

Code:
Clip.attachMovie("Bezeichner1",id, counter*100);
					
//werte schnappen1
Clip[id].url = TargetNode.attributes.url;
Clip[id].text = TargetNode.attributes.name;
					
//positionieren und Link setzten
Clip[id]._y= (counter * 46);
Clip[id]._x= (70);
//Clip[id].url = the_url;
trace(Clip[id].url +" <> "+ Clip[id].text);
Clip[id].onRelease = function(){getURL(this.url, "_blank");}
CatzHoek 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 05:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele