Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-12-2003, 14:26   #1 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Unhappy Externe Daten in Array zerlegen

Hallo Forum!

Kann mir vielleicht eine(r) helfen, komm irgendwie schon so lange nicht weiter.
ich habe eine Textdatei, in der die Artikelanzahl festgesetzt werden soll und die Artikel, jeden in einer Datei, die Dateien durchnummeriert. In den Artikeldateien sind die Infos zum Artikel mit Backslashes getrennt.
Was ist im Bezug darauf an diesen Zeilen falsch?
ActionScript:
  1. myVars20 = new LoadVars ();
  2. myVars20.onLoad = function () {
  3.     newsanzahl = Number (this.artikelzahl);
  4.     news_arr = [];
  5.     for (j = 0; j < newsanzahl; j++) {
  6.         this["myNewsVars" + j] = new LoadVars ();
  7.         this["myNewsVars" + j].onLoad = function () {
  8.             //trace ("anzahl: " + newsanzahl);
  9.             news_arr[j] = [];
  10.             news_arr[j] = this.artikel.split ('\\');
  11.             trace ("newsArray" + j + ": " + news_arr);
  12.             ticker.createTextField ("datum" + j, j, 100, 100, 300, 100);
  13.             ticker["datum" + j].text = news_arr[4][3];
  14.         };
  15.     }
  16.     //trace ("anzahl: " + newsanzahl);
  17.     for (i = 0; i < newsanzahl; i++) {
  18.         this["myNewsVars" + i].load ("deutsch/news/news" + i + ".txt");
  19.     }
  20. };
und natürlich auch:
ActionScript:
  1. myVars20.load ("deutsch/news/anzahl.txt");

Das sollte doch gehen so.
Na ja, vielleicht kann mir geholfen werden, bitte.
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::

Geändert von Kord (18-12-2003 um 14:43 Uhr)
Kord ist offline   Mit Zitat antworten
Alt 18-12-2003, 14:31   #2 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
Hi Kord

news_arr[j] = this.artikel.split ('');
was soll das ?
Du hast doch mit Backslash getrennt ...

also:
news_arr[j] = this.artikel.split ('\');

wobei ich Dir ein | Zeichen als Trennung empfehlen würde ...
das ist kein reserviertes Zeichen...


Gruss nky
nky ist offline   Mit Zitat antworten
Alt 18-12-2003, 14:44   #3 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Hallo nky, danke fürs Helfen.
Weiss nicht warum das nicht so ausschaut wie in meinem .fla.

news_arr[j] = this.artikel.split ('\\\');

So stehts eigentlich drinnen.
Muss beim Posten irgendwas falsch gelaufen sein. Vielleicht liegts am Mozilla.

Das Trennzeichen werde ich dann ändern, aber sonst?
LG,
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::
Kord ist offline   Mit Zitat antworten
Alt 18-12-2003, 14:54   #4 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
also - viel raff ich grad auch net

aber was ich errkenne kann.
news_arr[j] = [];

das kann nicht gefunden werden - da es im scope des ersten loadvars objektes liegt.....

die ganze struktur ist ziemlich verwirrend
ich würde das so vorschlagen - dann isses auch einfache zu debuggen (loadvars kürz ich mit LV ab...)


also ein aufruf der die anzahl lädt und wenn die bekannt ist wird eine funtion aufgerufen....

LV1.onLoad=function(success)
{
if(success )
{
ready();
}
}


function ready
{
LV2=new Lv
LV2.onLoad=function()
{
//nun die einzelnen news laden.....
}


sei dir bewusst das du Die Variablen innerhalb Deiner Load mit

mit LV2.variable ansprechen musst....
mit dem BSP von ganz oben würde das bedeuten

myVars20.news_arr[j] = [];


klarer ?

Gruss nky
nky ist offline   Mit Zitat antworten
Alt 18-12-2003, 15:50   #5 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Danke noch mal, habs jetzt umgestellt.
ActionScript:
  1. news_arr = [];
  2. myVars20 = new LoadVars ();
  3. myVars20.onLoad = function (success) {
  4.     if (success) {
  5.         newsanzahl = Number (this.artikelzahl);
  6.         ready ();
  7.     }
  8. };
  9. function ready () {
  10.     for (j = 0; j < newsanzahl; j++) {
  11.         this["myNewsVars" + j] = new LoadVars ();
  12.         this["myNewsVars" + j].onLoad = function () {
  13.             news_arr[j] = this.artikel.split ('|');
  14.             trace ("newsArray" + j + ": " + news_arr);
  15.             ticker.createTextField ("datum" + j, j, 100, 100 + 20 * j, 300, 100);
  16.             ticker["datum" + j].text = news_arr[j][3];
  17.         };
  18.     }
  19.     for (i = 0; i < newsanzahl; i++) {
  20.         this["myNewsVars" + i].load ("deutsch/news/news" + i + ".txt");
  21.     }
  22. }
  23. ///////////////////////
  24. myVars20.load ("deutsch/news/anzahl.txt");
Hab ich dich richtig verstanden? Generell bekomme ich immer doppelt so viele Einträge, wobei die erste Hälfte des Arrays leer ist (vorher auch schon). Kapiers grad überhaupt nicht.
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::
Kord ist offline   Mit Zitat antworten
Alt 18-12-2003, 16:00   #6 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
Also die Struktur ist jetzt schon viel lesbarer als vorher !!!
Jeztt hab ich zwar verstanden was vorgeht - aber nicht was falschläuft...

Im Code konnte ich keinen Logikfehler entdecken.....
wie ist das mit dem array - die erste hälfte ist leer ?
kannst das mal tracen und posten....

Ich such mal weiter - vielleicht find ich noch was..
Gruss nky

nky ist offline   Mit Zitat antworten
Alt 18-12-2003, 16:03   #7 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
warum die 2. schleife - kannst doch in eine schreiben ?

ActionScript:
  1. function ready ()
  2. {
  3.         for (j = 0; j < newsanzahl; j++)
  4.        {
  5.             this["myNewsVars" + j] = new LoadVars ();
  6.             this["myNewsVars" + j].onLoad = function ()
  7.            {
  8.                 news_arr[j] = this.artikel.split ('|');
  9.                 trace ("newsArray" + j + ": " + news_arr);
  10.            };
  11.  
  12.         this["myNewsVars" + j].load ("deutsch/news/news" + j + ".txt");
  13.  
  14.         }
  15. }

edit :ticker ist beim cutten un pasten verlorengegangen *g

ich finde aber immernoch keinen fehler ...

Gruss nky
nky ist offline   Mit Zitat antworten
Alt 18-12-2003, 16:12   #8 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Hab schnell ein Beispiel gemacht.

Danke nky, ist irre nett von dir so bemüht zu helfen.
Angehängte Dateien
Dateityp: zip daten_einlesen.zip (7,2 KB, 16x aufgerufen)
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::
Kord ist offline   Mit Zitat antworten
Alt 18-12-2003, 16:15   #9 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
kein problem aber ich habe kein flash auf der arbeit.....
bin jetzt aber gerade am heimfahren...
melde mich später

Gruss nky
nky ist offline   Mit Zitat antworten
Alt 04-01-2004, 13:52   #10 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Hallo Forum, ich hoffe ihr hattet alle einen spaßigen Jahreswechsel!

Wollte den thread nur noch mal aktiv machen; er ist ein bisschen unter gegangen. Wenn also einer helfen kann, bitte.
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::
Kord ist offline   Mit Zitat antworten
Alt 04-01-2004, 14:56   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Absolut spaßig, dankeschön.
Ich habe hier eine Version deines Scripts, die etwas besser funktioniert.

ActionScript:
  1. /**
  2. * Lade und zeige die aktuellen News an
  3. */
  4. function loadNews (sprache)
  5. {
  6.     // für den späteren Zugriff werden die News hierdrin gespeichert
  7.     gNews_arr = [];
  8.     //
  9.     // durch den Parameter sprache wird das Verzeichnis bestimmt,
  10.     // aus dem die News gelesen werden. default ist 'deutsch'
  11.     if (sprache.length <= 0) {
  12.         sprache = "deutsch";
  13.     }
  14.     var pfad = sprache + '/news/anzahl.txt';
  15.     //
  16.     // Zuerst wird die Anzahl der verfügbaren News eingelesen
  17.     // und dann alle News von 0 bis Anzahl-1
  18.     //
  19.     // TODO: Teste auf verschiedenen Plattformen, wieviele
  20.     // Ladevorgänge ich gleichzeitig starten kann, ohne dass
  21.     // es zu Problemen kommt.
  22.     var lv = new LoadVars ();
  23.     lv.onLoad = function (success)
  24.     {
  25.         if (success) {
  26.             for (var i = 0; i < Number (this.artikelzahl); i++) {
  27.                 loadOneNews (i, sprache);
  28.             }
  29.         }
  30.     };
  31.     lv.load (pfad);
  32. }
  33. /**
  34. * Lade und zeige eine einzelne News an
  35. */
  36. function loadOneNews (idx, sprache)
  37. {
  38.     // durch den Parameter sprache wird das Verzeichnis festgelegt
  39.     // aus dem die News geladen werden, default ist 'deutsch'
  40.     if (sprache.length <= 0) {
  41.         sprache = "deutsch";
  42.     }
  43.     //
  44.     // Die einzelnen News sind in verschiedenen Dateien gespeichert
  45.     // und werden anhand des Dateinamens zugeordnet. Die News mit
  46.     // dem Index 7 steht in der Datei news7.txt
  47.     //
  48.     // TODO: Wenn ich in der ersten Datei anstatt der Anzahl die
  49.     // Dateinamen speichere, kann ich beliebig sortieren, ohne dass
  50.     // ich hier ständig alle Dateinamen ändern muss.
  51.     //
  52.     // TODO: Was passiert eigentlich, wenn eine News nicht geladen
  53.     // werden kann, dann habe ich ein Loch sowohl in der Liste, als
  54.     // auch in der Anzeige.
  55.     var pfad = sprache + '/news/news' + idx + '.txt';
  56.     //
  57.     // Für die Anzeige werden später Textfelder erzeugt, die untereinander
  58.     // positioniert sind. Die relative Position wird durch den Index festgelegt
  59.     var tfName = 'datum' + idx;
  60.     var tfX = 10;
  61.     var tfY = 30 + idx * 10;
  62.     var tfW = 200;
  63.     var tfH = 500;
  64.     //
  65.     // Wenn die News erfolgreich geladen wurde, wird sie in der globalen
  66.     // Liste unter ihrem Index gespeichert und angezeigt
  67.     var lv = new LoadVars ();
  68.     lv.onLoad = function (success)
  69.     {
  70.         if (success) {
  71.             gNews_arr[idx] = this.artikel.split ('|');
  72.             ticker.createTextField (tfName, idx, tfX, tfY, tfW, tfH);
  73.             ticker[tfName].text = gNews_arr[idx][3];
  74.         }
  75.     };
  76.     lv.load (pfad);
  77. }
  78. //
  79. loadNews ();

Mit ein paar Kommentaren sieht man doch gleich viel besser, was hier passieren soll.
Das Problem lag übrigens darin, dass das j in onLoad nicht dem aktuellen j in der Schleife sondern dem Endstand von j entsprochen hat.

Frohe Ostern

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 04-01-2004, 16:03   #12 (permalink)
Fläscher
 
Benutzerbild von Kord
 
Registriert seit: Jan 2002
Ort: Wien
Beiträge: 343
Sieht, wie gewohnt, sehr gut aus!
Vielen Dank!
__________________

:: Wer im Leben alles schneller macht lebt länger (A. Einstein) ::
Kord 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:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele