Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-04-2004, 21:55   #1 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
Frage zu Arrays

Hallo Leute,

Ich habe ein Array mit 20 Elementen.
Manchmal will ich enzelne Werte verändern:

myArray[4]=350;
myArray[5]=370;

Wenn ich aber, sagen wir, die ersten zehn Elemente
verändern will, würde ich es gerneso schreiben:

myArray=[100,120,140,160,180,200,220,240,260,280]

aber dann werden die restlichen zehn Werte gelöscht.

Kann ich das trotzdem irgendwie platzsparend machen,
ohne in das Array die restlichen Elemente einzutragen?
Da diese sich nicht ändern, wäre es gut, ich bräuchte
sie auch nicht zu erwähnen.

Gruß,

Micha
michaelklaehn ist offline   Mit Zitat antworten
Alt 25-04-2004, 22:15   #2 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
hi, mach Dir doch ne kleine Funktion !
Bsp:
ActionScript:
  1. //Das ist mal Dein Array
  2. myArray=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
  3.  
  4. /*Nun Deine Funktion. Mitgegeben wird der EditArray und die Position an der er Anfangen soll zu ändern.
  5. Eingebaut ist mal eine Abfrage, ob eine Position des editArrays leer ist,
  6. an dieser Stelle würde der alte Eintrag bestehen bleiben.*/
  7. function editArray(myEditArray,startPos){
  8.     for (i=0;i<myEditArray.length;i++){
  9.         if(myEditArray[i]!=""){
  10.             myArray[i+startPos]=myEditArray[i];
  11.         }
  12.     }
  13. }
  14. //nun der EditArray, welcher einen Teil deines Arrays ersetzen soll
  15.  
  16. //Am Ende musst du nunoch dies eingeben
  17. myEditArray=[100,"",130,160,180,200,220,240,260,280];
  18. editArray(myEditArray,1);
  19. trace(myArray);
  20.  
  21. //oder das
  22. myEditArray=[1000,10001,100001];
  23. editArray(myEditArray,8);
  24. trace(myArray);


Sieht erst mal wie du siehst nicht sehr platzsparend aus, wenn dus aber häufiger benötigst, lohn es sich sicher !!

MFG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !

Geändert von flash bier (25-04-2004 um 22:23 Uhr)
flash bier ist offline   Mit Zitat antworten
Alt 25-04-2004, 22:27   #3 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
Das ist ein interessantes Ding, was Du
da geschrieben hast! Ich weiß aber nicht
genau, ob es das ist was ich suche, denn:

Ich habe sehr viele Arrays in meinem Dokument. Mit Deiner Methode müsste
ich zu jedem Array ein editArray dazupacken. Da würde der Verwaltungsapperat in die Höhe schiessen!

Ich dachte eher an eine Syntaxlösung.
Ich dachte mal an:

myArray=[10,20,30, , , ,];
Als die Felder, die existieren, aber nicht überschrieben werden. Ging aber
nicht.



WieDnDann?

michaelklaehn ist offline   Mit Zitat antworten
Alt 25-04-2004, 22:50   #4 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
die funktion ein wenig umändern und schon kannst du jeden beliebigen Array mit dieser funktion editieren.
Es werden nicht für jeden Array ein myEditArray benötigt.
Es ist immer der gleiche myEditArray, der den verschiedenen Arrays den editierbaren bereich geben !
ActionScript:
  1. //Das ist mal Dein Array
  2. myArray1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
  3.  
  4. myArray2=[10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200];
  5.  
  6. /*Nun Deine Funktion. Mitgegeben wird der EditArray und die Position an der er Anfangen soll zu ändern.
  7. Eingebaut ist mal eine Abfrage, ob eine Position des editArrays leer ist, an dieser Stelle würde der alte Eintrag bestehen bleiben.*/
  8. function editArray(derArray,derEditArray,startPos){
  9. for (i=0;i<myEditArray.length;i++){
  10.                 if(myEditArray[i]!=""){
  11.                         derArray[i+startPos]=myEditArray[i];
  12.                 }
  13.         }
  14. }
  15. //nun der EditArray, welcher einen Teil deines Arrays ersetzen soll
  16. myEditArray=["macht","nun","dies"];
  17. //hier wird der myArray2 geändert
  18. editArray(myArray2,myEditArray,3);
  19. trace(myArray2);
  20.  
  21. //hier wird der myArray1 geändert
  22. myEditArray=["und","nun","das"];
  23. editArray(myArray1,myEditArray,15);
  24. trace(myArray2);

Im Grunde könntest du den myEditArray als _root festlegen und
ihn dann auch in der funktion als root aufrufen, dann hättest du das nicht mehr in dem funktionsaufruf !

ActionScript:
  1. function editArray(derArray,startPos){
  2. for (i=0;i<_root.myEditArray.length;i++){
  3.                 if(_root.myEditArray[i]!=""){
  4.                         derArray[i+startPos]=_root.myEditArray[i];
  5.                 }
  6.         }
  7. }
  8.  
  9. //der aufruf dann nurnoch mit dem zu editierendem Array und der Position
  10. _root.myEditArray=["und","nun","das"];
  11. editArray(myArray1,15);

Die neuen Werte, die Du da hast, musst du ja so oder so irgendwie verwalten !

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !

Geändert von flash bier (25-04-2004 um 22:54 Uhr)
flash bier ist offline   Mit Zitat antworten
Alt 25-04-2004, 22:59   #5 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
oder eben so;
ActionScript:
  1. myArray=[1,2,3,4,5];
  2. myArray=[5,10,myArray[2],myArray[3],myArray[4]];
  3. trace(myArray);
MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 25-04-2004, 22:59   #6 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
Das ist phantastisch!

Mann, wie hast Du das so schnell hingekriegt!

Genau sowas brauche ich. Wie geil.
Danke!

michaelklaehn ist offline   Mit Zitat antworten
Alt 25-04-2004, 23:09   #7 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
na zu dieser tageszeit laufe ich zu Hochform auf
welche Variante hat Dir denn nun geholfen ?

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 27-04-2004, 09:51   #8 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
Ich hatte bisher keine Gelegenheit, daß Script einzubauen.
Tendentiell aber eher das ohne _root. Ich mag _root nämlich
nicht :-)

Gruß,
Micha
michaelklaehn ist offline   Mit Zitat antworten
Alt 27-04-2004, 09:54   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731



des iss das gleiche, michaelklaehn


ob man es selbst angibt oder aber flash es intern setzt bleibt gleich...

die verweisen beide auf das gleiche ding.


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 28-04-2004, 12:32   #10 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
Nicht ganz

Wenn ich die swf nämlich nachlade habe ich mit _root ein Problem. You know?
michaelklaehn ist offline   Mit Zitat antworten
Alt 28-04-2004, 12:55   #11 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
wenn du das als swf irgendwo hin nachlädst, machst du eh was falsch, michaelklaehn...denn außer auf _root gehört eine solche funktion nirgendwo hin... u know?!


greetz

kelor
kelor 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:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele