Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-08-2003, 16:01   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 13
array stringelemente in number konvertieren

Hallo!

Ich habe folgendes Problem:

Ich lade aus einer externen txt datei variablen in einen flash film

beispiel inhalt txt datei:

&xpos=100,200,300,400&

wird reingeladen über:

contentex = new LoadVars ();

contentex.onLoad = function (success) {

if (success) {
xholder = this.xpos.split (",");

}
};

contentex.load ("pos_values.txt");

da krieg ich dann nen Array raus:

Variable _level0.xholder = [Objekt #7, Klasse 'Array'] [
0:"100",
1:"200",
2:"300",
3:"400"
]

Nun sind die Elemente aber Strings:

Einzelne Strings konvertieren ist ja nun nicht das Problem
via Number()

Aber kann ich den gesamten Array konvertieren, so dass
im Endeffekt folgendes rauskommt.

Variable _level0.xholder = [Objekt #7, Klasse 'Array'] [
0:100,
1:200,
2:300,
3:400
]

Ich brauche die Zahlenwerte um sie später auf die folgende Weise zu verwursten:

var pos = 0;
var counter = xholder.length +1;

for (var i=1; i<counter; i++) {
_root.attachMovie('clip', objektname[pos], i, {_x:this.xholder[pos], _y:this.yholder[pos});
_root.pos++;

}

Lässt sich da mit dem Array was daddeln?


Vielen Dank im Voraus

Andreas
zweidorn ist offline   Mit Zitat antworten
Alt 21-08-2003, 16:11   #2 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. a = ["100", "200", "300"];
  2. b = [];
  3. for (var i = 0; i<a.length; i++) {
  4.     b.push(Number(a[i]));
  5. }
  6. trace(b[0]+b[2]);
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 16:14   #3 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. b[i] = Number(a[i]);

identisch, weiß aber nicht, was schneller ist.
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 21:37   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 13
soweit hab ichs kapiert aber...

soweit hab ichs kapiert und an meine bedürfnisse angepasst

contentex = new LoadVars ();

contentex.onLoad = function (success) {

if (success) {


xholderex = this.xpos.split (",");
var iterator = xholderex.length;

xholder = [];
for (var i = 0; i<iterator; i++) {
_root.xholder.push(Number(xholderex[i]));
trace(xholder[i]);

}
}
}

contentex.load ("pos_values.txt");

aber wie komme ich an xholder ausserhalb der funktion ran
bzw wie kippe ich xholder in einen globalen container?

danke schon mal

andreas
zweidorn ist offline   Mit Zitat antworten
Alt 21-08-2003, 21:42   #5 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
...xholder ist doch auf root definiert....
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 21:55   #6 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hi!

Da hat der Warrant recht! Aber wenn alle Stricke reissen, mach einfach bei der initialisierung ein _global davor, dann kannst du es von überall mit xholder[n] ansprechen:

ActionScript:
  1. _global.xholder = [];

Aber nebenbei, nur so als Tipp: Du brauchst die Strings in dem Array gar nicht in Numbers konvertieren, das macht Flash für dich!

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 21-08-2003, 22:06   #7 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hi chino ...erklär mal...
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 22:16   #8 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hi Warrant!

Da gibt´s nicht viel zu erklären...

deinMC._x = "100" macht das gleiche wie deinMC._x=100;

Weiteres Beispiel:

this.lineStyle (1, 990099, 100);
this.lineTo (100, "100");

Flash biegt sich halt in den meisten Fällen die Parameter so wie sie gebraucht werden.

Gruss, Chino

Geändert von Chino (21-08-2003 um 22:18 Uhr)
Chino ist offline   Mit Zitat antworten
Alt 21-08-2003, 22:30   #9 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
naja, wenn man einen string aber als number brauch,
dann weiß flash das ja nun nicht automatisch...(wär ja noch schöner.... )


ActionScript:
  1. m = new LoadVars();
  2. m.onLoad = function(ok) {
  3.     if (ok) {
  4.         a = this.daten.split("|");
  5.         b = [];
  6.         for (var i = 0; i<a.length; i++) {
  7.             b[i] = (Number(a[i]));
  8.         }
  9.         trace(a[0]+a[2]);// 100300
  10.         trace(b[0]+b[2]);// 400
  11.        
  12.     }
  13. };
  14. m.load("arrr.txt", this);


txt: &daten=100|200|300&
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 22:38   #10 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Japp, schon klar...

Habe mich wohl etwas unglücklich ausgedrückt. Das gilt natürlich nicht generell. Aber manchmal kann man sich die Umwandlung halt sparen.

Natürlich ist dein Weg sauberer, das steht außer Frage!

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 21-08-2003, 22:53   #11 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Und weil ich es ja nicht lassen kann, hier mal eine Version als Array.prototype...

ActionScript:
  1. Array.prototype.convertToNumbers = function () {
  2.     for (var i in this) {
  3.         if (typeof this[i] != "function") {
  4.             this[i] = Number (this[i]);
  5.         }
  6.     }
  7.     return this;
  8. };
  9. test = new Array ("100", "200", "300", "400");
  10. trace(test.convertToNumbers ());

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 22-08-2003, 09:11   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 13
was alles so passiert wenn man schläft

Guten Morgen! Kaffee ist fertig!

Danke erstmal für die Resonanz.
Ich hab auch gedacht, dass xholder im root liegt, aber die folgeschleife gibt mir beim tracen undefined aus und setzt
die entsprechenden werte auf 0.

trace gibt in der der schleife innerhalb der funktion korrekte Werte zurück

Lass ich aber das trace in der folgeschleife ausführen
bekomme ich undefined zurück!

weder root noch global funktionieren.

und ich check es einfach nicht warum es da hakt.

ich häng mal die datei dran und wäre glucklitsch wenn da mal jemand drüberfliegen könnte.

Gruss Andreas
Angehängte Dateien
Dateityp: zip berlinkarte.zip (36,1 KB, 4x aufgerufen)
zweidorn ist offline   Mit Zitat antworten
Alt 22-08-2003, 09:40   #13 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Moin!

Das kommt daher, weil du die forSchleife startest, bevor die onLoad Aktion fertig ist. Also ist xholder noch gar nicht definiert...

Pack am besten alles was nach dem loadVars kommt in eine Funktion, und rufe diese dann aus dem lv.onLoad Block auf!

Gruss, Chino!
Chino ist offline   Mit Zitat antworten
Alt 24-08-2003, 16:48   #14 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Berlin
Beiträge: 13
danke!!!!!

Hat zwar ne weile gedauert bis ich es geschnallt habe.

Aber das O'Reilly von Moock hat mir dann doch noch die Augen geöffnet.

Danke nochmal für die Hilfe jetzt funktioniert alles wie es soll.

Gruss Andreas
zweidorn 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 12:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele