Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-07-2003, 14:53   #1 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
welche methode ist besser?...

... und was ist der unterschied?
ActionScript:
  1. // methode 1...
  2. for (i in array) {}
  3. // methode 2
  4. for (i=0;i<array.length;i++) {}
thorben.schmitt ist offline   Mit Zitat antworten
Alt 29-07-2003, 14:58   #2 (permalink)
Steffen G.
 
Benutzerbild von Tschdaeff
 
Registriert seit: Aug 2001
Ort: Ba-Wü
Beiträge: 4.123
mit der for in schleife kannst du direkt mit den inhalten des arrays arbeiten und bei der normalen for schleife hast du nur ne variable zahl die so hoch zählt bis sie array.length erreicht hat...

cu mfg
Tschdaeff
__________________
mod@
www.flashbattle.de
www.steffen-guse.de
------------------------------------

Tschdaeff ist offline   Mit Zitat antworten
Alt 29-07-2003, 15:07   #3 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
thx, also sollte ich mir angewoehnen bei arrays die for...in-variante zu verwenden, od?
thorben.schmitt ist offline   Mit Zitat antworten
Alt 29-07-2003, 15:11   #4 (permalink)
Steffen G.
 
Benutzerbild von Tschdaeff
 
Registriert seit: Aug 2001
Ort: Ba-Wü
Beiträge: 4.123
kommt drauf an was du machen willst
ActionScript:
  1. arr = ["Steffen","Guse","Tschdaeff"]
  2. for (i in arr) {
  3.     trace (i)
  4.     trace (arr[i])
  5. }
  6.  
  7. for (j=0;j<3;j++) {
  8.     trace (arr[j])
  9. }

das hat die selbe wirkung... nur das die for in schleife von hinten nach vorn arbeitet

cu mfg
Tschdaeff
__________________
mod@
www.flashbattle.de
www.steffen-guse.de
------------------------------------

Tschdaeff ist offline   Mit Zitat antworten
Alt 29-07-2003, 15:18   #5 (permalink)
-------------------------
 
Benutzerbild von Marpfei
 
Registriert seit: Jul 2002
Ort: Zürich
Beiträge: 159
Ich habe aber dann immer mit folgendem Schwierigkeiten:

ActionScript:
  1. Array.prototype.stoerefried = function () {
  2.     // ich bin ein Stoerefried
  3. }
  4. arr = ["Steffen", "Guse", "Tschdaeff"];
  5. for (i in arr) {
  6.     trace (i);
  7.     trace (arr[i]);
  8. }

Die forIn-schleife läuft die Eigenschaften von Objekten durch. Ganz praktisch ist das, wenn man mal schaun will, wie viele MCs in einem MC liegen:

ActionScript:
  1. function checkMC () {
  2.     for (var property in mc) {
  3.         if (typeof mc[property] == "movieclip") {
  4.             trace ("- Found instance: " + mc[property]._name);
  5.         }
  6.     }
  7. }

Sonst vermeide ich diese Schleife eher....

marpfei
Marpfei ist offline   Mit Zitat antworten
Alt 29-07-2003, 15:29   #6 (permalink)
MiM
Neuer User
 
Registriert seit: Sep 2001
Ort: Neckarsulm
Beiträge: 273
besser oder schlechter kann man nicht sagen, es sind eben unterschiedliche Methoden, die unterschiedliche Aufgaben erfüllen aber auch Gemeinsamkeiten haben. Für die normale for Schleife kann man nur bei Arrays und eben nicht bei Objekten verwenden. Um in einem Objekt eben auch alle Elemente nacheineander anzusprechen zu können braucht man die for...in Schleife.
Die Reihenfolge in der die for...in Schleife das Objekt durchgeht ist nicht festgelegt (soviel ich weiß zumindest). D.h. das die Elemente eines Objekts z.B. von hinten nach vorne durchgegangen werden und nicht wie bei der for Schleifen von vorne nach hinten.

----------------------
Flash Blog

Geändert von MiM (29-07-2003 um 15:31 Uhr)
MiM ist offline   Mit Zitat antworten
Alt 29-07-2003, 20:13   #7 (permalink)
Steffen G.
 
Benutzerbild von Tschdaeff
 
Registriert seit: Aug 2001
Ort: Ba-Wü
Beiträge: 4.123
@marpfei

genau zu dem nehm ich sie normal auch immer... hab sie bis jetzt kaum anderst verwendet

cu mfg
Tschdaeff
__________________
mod@
www.flashbattle.de
www.steffen-guse.de
------------------------------------

Tschdaeff ist offline   Mit Zitat antworten
Alt 29-07-2003, 20:51   #8 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
hi ihr!

mir geht's auch so dass ich for...in nicht so gerne verwende, aber wenn ich mir meinen kleinen test so anschau werde ich mir das möglicherweise angewöhnen:
ActionScript:
  1. myArr = new Array("bla", "blu", "blo", "bli","bla", "blu", "blo", "bli","bla", "blu", "blo", "bli","bla", "blu", "blo", "bli");
  2. mitfor = function(arr) {
  3.     for (var i=0; i<arr.length; i++) {
  4.         x=1;
  5.     }
  6. }
  7. mitforin = function(arr) {
  8.     for (var i in arr) {
  9.         x=1;
  10.     }
  11. }
  12. t = getTimer();
  13. for (var i=0; i<100; i++) {
  14.     mitfor(myarr);
  15. }
  16. trace("Mit for: "+(getTimer()-t));
  17. t = getTimer();
  18. for (var i=0; i<100; i++) {
  19.     mitforin(myarr);
  20. }
  21. trace("Mit for...in: "+(getTimer()-t));
  22. stop();
  23. //Ausgabe:
  24. //Mit for: 154
  25. //Mit for...in: 81
  26.  


so far, mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 29-07-2003, 20:55   #9 (permalink)
God made me funky..
 
Registriert seit: Apr 2003
Ort: Bremen
Beiträge: 1.067
Yep for.. in ist schneller, also wenn es nicht auf die Reihenfolge ankommt...
__________________
Kunst ist in erster Linie eine Frage der Form und nicht des Inhalts
Paul Rand
e2e4 ist offline   Mit Zitat antworten
Alt 29-07-2003, 20:59   #10 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
vielleicht noch dies hier :

http://www.pheidrias.de/flash/tuts/a....html#schleife

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 29-07-2003, 21:01   #11 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
@mati

36
22
.......
warrantmaster ist offline   Mit Zitat antworten
Alt 29-07-2003, 21:09   #12 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Kuckuck...

Ähm... die for schleife braucht aber auch länger, weil du jedesmal die Länge des Arrays abfragst. Wenn Du diese vorher in eine lokale var packst geht´s schneller

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 29-07-2003, 21:47   #13 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
for...in wird (so ich mich nicht verlesen habe) vor allem bei größeren Arrays effektiver.

Bei "kleinen" Sachen fällt da nix ins Gewicht...

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 29-07-2003, 21:53   #14 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
@ warrant....
Mit for: 27
Mit for...in: 17





wie weiter oben schon steht....jedes erfüllt seinen zweck und jedes hat seine bestimmung


grz
__________________
hang loose
Majo ist offline   Mit Zitat antworten
Alt 29-07-2003, 21:53   #15 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Bei "for in" darf die Reihenfolge aber wirklich gar keine Rolle spielen, sonst kann es Probleme geben.
for in liefert die Einträge NICHT rückwärts, jedenfalls kann man sich nicht darauf verlassen:

ActionScript:
  1. a = [2,4,6,4];
  2. var s = "";
  3. for( var i=0; i<a.length; i++){
  4.     s += a[i] + ",";
  5. }
  6. trace(s);
  7. var s = "";
  8. for( var i in a){
  9.     s += a[i] + ",";
  10. }
  11. trace(s);
  12. //
  13. a.sort();
  14. //
  15. var s = "";
  16. for( var i=0; i<a.length; i++){
  17.     s += a[i] + ",";
  18. }
  19. trace(s);
  20. var s = "";
  21. for( var i in a){
  22.     s += a[i] + ",";
  23. }
  24. trace(s);

Ausgabe:
2,4,6,4,
4,6,4,2,
2,4,4,6,
4,4,6,2,

Man beachte die letzte Reihe, die eben nicht rückwärts sortiert ist.

mfg r.
bokel 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:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele