Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-10-2005, 16:54   #1 (permalink)
Zeitgenosse
 
Benutzerbild von tylerdurden
 
Registriert seit: Oct 2003
Ort: München
Beiträge: 177
Unhappy XML Daten-Übergabe

Hallo!

Ich möchte Dateinamen aus einer Liste per Mausklick auf das jeweilige
Listenelement laden lassen.

Actionscriptseitig soll das (gekürzt) so funktionieren:

if (inhalt_xml[i] != undefined) {
this[nName].dateiname = inhalt_xml[i].attributes.datei;

this[nName].onRelease = function() {
loadMovieNum("unterordner/" + dateiname + ".swf",20);}
}

im XML-file steht:

<inhalt datei="name">
</inhalt>

Flash gibt für dateiname immer "undefined" aus.

Sieht jemand warum?
__________________
I love deadlines. I specially love the swooshing sound they make as they fly by.
Douglas Adams
OS X Leopard + Adobe CS3 Design Premium
tylerdurden ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:01   #2 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
kommt ganz darauf an, wie deine node inhalt_xml[i] aufgebaut ist.... duch das [i] vermute ich mal, dass es sich bereits um ein childNode handelt !? oder was soll das i, was steht drumherum? wenn du ausführlicher zeigst, wie du zu deiner inhalt_xml[i] kommst, und wie deine xml aussieht, sollte dir recht flott geholfen werden können!

gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:12   #3 (permalink)
Zeitgenosse
 
Benutzerbild von tylerdurden
 
Registriert seit: Oct 2003
Ort: München
Beiträge: 177
Unhappy ausführlicher

Hallo. Endlich erbarmt sich einer.
Hab die letzten 3 Stunden mit diesem ...-Problem verbracht...

Ich wollte es ein bisschen reduziert / abstrakt / reduziert fassen.
Hier die ausführliche Variante:

ActionScript:
  1. mein_xml = new XML();
  2. mein_xml.ignoreWhite = true;
  3. mein_xml.load("wettbewerb.txt");
  4. mein_xml.onLoad = function(status) {
  5.     if (status) {
  6.         news_xml = mein_xml.firstChild.childNodes;
  7.         delete mein_xml;
  8.         initNavigation();
  9.         if (aktAnzeige < max-anzahl) {
  10.         j = 0;
  11.         aktAnzeige += j;
  12.         }
  13.         setListe();
  14.     }
  15. };
  16.  
  17. function setListe() {   
  18.     for (i=aktAnzeige; i< maxAnzeige;i++) { 
  19.             nName = "newsclip" + j;
  20.             attachMovie("newsclip", nName, j++);
  21.         if (news_xml[i] != undefined) {   
  22.             this[nName]._x = 0;
  23.             this[nName]._y = 37 +(23.6*j); //36.5 + this[nName]._height * j; //* 1.0265;
  24.             this[nName].nr_txt.text = i + 1;
  25.             this[nName].titel_txt.text = news_xml[i].attributes.titel;
  26.             this[nName].untertitel_txt.text = news_xml[i].attributes.untertitel;
  27.             this[nName].datum_txt.text = news_xml[i].attributes.datum;
  28.             this[nName].beschreibung_txt.text = news_xml[i].attributes.beschreibung;
  29.             this[nName].useHandCursor = false;
  30.             [B]this[nName].link = news_xml[i].attributes.datei;
  31.             this[nName].onRelease = function() {   
  32.                 loadMovieNum("unterordner/" + link + ".swf",20);[/B]
  33.             }
  34.         } else {       
  35.             this[nName].removeMovieClip();     
  36.         }
  37.     }
  38.     if (anzahl <= aktAnzeige+max) {
  39.         anzeige_txt.text = (aktAnzeige+1) + " - " + anzahl;
  40.     } else if (anzahl != 0) {
  41.         anzeige_txt.text = (aktAnzeige+1) + " - " + (aktAnzeige+max);
  42.     }
  43.     if (anzahl == 0) {
  44.         anzeige_txt.text = "0 / 0";
  45.     }
  46.     gesamt_txt.text = anzahl;
  47. }

Das Ganze baut eine Liste aus den Inhalten der XML-Datei.

Ich verstehe nicht warum mir das Teil nach zahllosen
Versuchsvarianten immer wieder "undefined" oder bei manchen
Tests (wenn man this.[nName] umgeht) einfach nur das letzte
Datei-Element übernimmt. Na gut, letzteres verstehe ich sogar.
Also mit dem "Läufer", aber wie?

Danke für jede Hilfe,
Andreas
__________________
I love deadlines. I specially love the swooshing sound they make as they fly by.
Douglas Adams
OS X Leopard + Adobe CS3 Design Premium
tylerdurden ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:25   #4 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hi,
das sieht doch schon besser aus. hast du dir denn schon mal "news_xml" gleich zu beginn der funktion "setListe()" tracen lassen? ich denke, du hast hier ein scope-problem. news_xml wurde im handler von onLoad deklariert und sollte somit in anderen funktionen unbekannt sein. eine übergabe per parameter ist sowieso weitaus sicherer (um genau zu sein 100% sicher), als auf globale variablen zu setzen (=> sehr unsicher).
also übergib news_xml am besten per parameter der funktion setListe()!
ActionScript:
  1. mein_xml.onLoad = function(status) {
  2.         if (status) {
  3.                 news_xml = mein_xml.firstChild.childNodes;
  4.                 delete mein_xml;
  5. //
  6.                 setListe(news_xml);
  7.         }
  8. };
  9.  
  10. function setListe (xml) {
  11. var news_xml = xml;
  12. //
  13. }
damit ist die variable in der funktion auf jeden fall bekannt.
versuch das mal, oder schreib auf jeden fall, was der trace von news_xml innerhalb von setListe ergibt (sollte zumindest [object][object] sein).

gruß janosch

EDIT:
was ist denn das "j" in
nName = "newsclip" + j;
attachMovie("newsclip", nName, j++);
ich sehe da nur ein "i" in der for-schleife......

Geändert von janoshnosh (09-10-2005 um 18:27 Uhr)
janoshnosh ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:34   #5 (permalink)
Zeitgenosse
 
Benutzerbild von tylerdurden
 
Registriert seit: Oct 2003
Ort: München
Beiträge: 177
das hüpfende komma, der springende punkt

das j ist ein zähler (von ganz oben).
der läuft und zählt mit.

bin kein programmierer (skript ist open source - modifiziert).
ich versuch mal deine tips umzusetzen.

vielen dank erstmal.

eigentlich funktioniert alles.
es müsst nur der punkt mit dem datei-child noch hinhauen.
__________________
I love deadlines. I specially love the swooshing sound they make as they fly by.
Douglas Adams
OS X Leopard + Adobe CS3 Design Premium
tylerdurden ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:41   #6 (permalink)
Zeitgenosse
 
Benutzerbild von tylerdurden
 
Registriert seit: Oct 2003
Ort: München
Beiträge: 177
Nachtrag

hab's ausprobiert.
klappt erstmal gar nix mehr.

kurz gesagt:
dein ansatz ist programmiertechnisch bestimmt der sinnvollere,
aber ich brauche wirklich nur die doofe "datei" verwendbar.

extern (im xml) ist sie als <... datei="beispielname">

definiert.

wie kann ich sie dann einlesen?
die text-feld-übertrage klappen nämlich alle.

ActionScript:
  1. this[nName].[B]link[/B] = news_xml[i].attributes.datei;
  2. this[nName].onRelease = function() {   
  3.         loadMovieNum("ordner/" + [B]link[/B] + ".swf",20);

ganz naiv stelle ich mir vor, dass es einfach und allein an der link-markierten
stelle liegen kann. gibt es noch andere "anhängsel" wie .text die das teil
lesbar machen?
__________________
I love deadlines. I specially love the swooshing sound they make as they fly by.
Douglas Adams
OS X Leopard + Adobe CS3 Design Premium
tylerdurden ist offline   Mit Zitat antworten
Alt 09-10-2005, 18:49   #7 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
aha, i see i see....
das heißt also, alle daten kommen ordnungsgemäß an? dann versuch es mal so:
ActionScript:
  1. this[nName].link = news_xml[i].attributes.datei;
  2. this[nName].onRelease = function() {
  3.         loadMovieNum("ordner/" + this.link + ".swf",20);
  4. }

janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 09-10-2005, 19:13   #8 (permalink)
Zeitgenosse
 
Benutzerbild von tylerdurden
 
Registriert seit: Oct 2003
Ort: München
Beiträge: 177
Thumbs up das schönste an flash ist

dass man immer wieder feststellt wie blöd man ist.

VIELEN DANK, Meister.
genau das war's.


me so stoopid.
__________________
I love deadlines. I specially love the swooshing sound they make as they fly by.
Douglas Adams
OS X Leopard + Adobe CS3 Design Premium
tylerdurden ist offline   Mit Zitat antworten
Alt 09-10-2005, 22:25   #9 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
vielleicht hilft dir auch mein Tutorial weiter, falls du irgendwas nicht richtig verstanden hast (s. signatur).

pape
pape 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 13:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele