Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-01-2005, 15:46   #1 (permalink)
Wurstkind
 
Benutzerbild von Artworx3D
 
Registriert seit: Aug 2003
Ort: Bad Homburg
Beiträge: 62
Kann man das nicht auch kürzer schreiben

Hallo, Ich habe hier folgendes AS, was tadellos funktioniert, aber sehr lang und warscheinlich umständlich geschrieben ist:

ActionScript:
  1. on (release) {
  2.     _root.menue_bg.gotoAndStop (23);
  3.     _root.kreis.rechteck.gotoAndStop (1);
  4.     if (_root.rechteck == 1) // Quadrat, also ein abstand von 6 Farben von Ecke zu Ecke
  5.     {
  6.     for(z=1; z<=4; ++z){
  7.         _root.kreis.auswahl["a" + z + "_col"] = new Color (_root.kreis.auswahl["a" + (z)]);
  8.         if (z==1){
  9.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][21]); } // es giebt 24 Farben, da aber Farbkreis, geht es nach der 24. Farbe wieder bei der ersten los
  10.         if (z==2){
  11.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][3]); }
  12.         if (z==3){
  13.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][9]); }
  14.         if (z==4){
  15.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][15]); }
  16.     }
  17.     }
  18.     else if (_root.rechteck == 2) // Rechteck mit den Abständen 4 und 8 von Ecke zu Ecke
  19.     {
  20.         for(z=1; z<=4; ++z){
  21.         _root.kreis.auswahl["a" + z + "_col"] = new Color (_root.kreis.auswahl["a" + (z)]);
  22.         if (z==1){
  23.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][22]); }
  24.         if (z==2){
  25.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][2]); }
  26.         if (z==3){
  27.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][10]); }
  28.         if (z==4){
  29.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][14]); }
  30.     }
  31.     }
  32.     else if (_root.rechteck == 3) //Rechteck mit den Abständen 2 und 12 von Ecke zu Ecke
  33.     {
  34.     for(z=1; z<=4; ++z){
  35.         _root.kreis.auswahl["a" + z + "_col"] = new Color (_root.kreis.auswahl["a" + (z)]);
  36.         if (z==1){
  37.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][23]); }
  38.         if (z==2){
  39.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][1]); }
  40.         if (z==3){
  41.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][11]); }
  42.         if (z==4){
  43.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][13]); }
  44.     }
  45.     }
  46.         }

kann man das nicht Besser machen?


AWX

Geändert von Artworx3D (08-01-2005 um 21:59 Uhr)
Artworx3D ist offline   Mit Zitat antworten
Alt 08-01-2005, 20:13   #2 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
moin!
ich habe nicht so viel ahnung von AS...

... aber wenn ich mir deine datei mal angucke, ist das aber alles ziemlich konfus aufgebaut, finde ich, undzwar, weil du da ziemlich viele objekte hast, und so ziemlich alles hat ein eigenes actionscript. so oft wie ich da irgendwo stop(); gesehen habe, wozu machst du das?
bei einem gotoAndStop(); befehl, braucht man das doch nicht...

naja, es ist auch irgendwie ziemlich schwer, da die zusammenhänge drin zu finden...
joa, und hm, wo ist in dem flashfilm denn das script, was du gepostet hast?
zu dem script, man könnte aus den for schleifen eine machen, und das if in die schleife setzen, aber ob das sinvoll ist, weis ich nicht...

ich ahb mal die schleifen als eine gemacht, und 2 functionen gemacht... so ist es etwas einfacher, aber mal gucken, ich denke, es geht noch viel einfacher...

ActionScript:
  1. on (release) {
  2.     _root.menue_bg.gotoAndStop(23);
  3.     _root.kreis.rechteck.gotoAndStop(1);
  4.     for (z=0; z<4; ++z) {
  5.         if (_root.rechteck == 1) {
  6.             // Quadrat, also ein abstand von 6 Farben von Ecke zu Ecke
  7.             // setCOLOR
  8.             setColor(z)
  9.             // setRGB
  10.             if (z == 1) {
  11.                 funcSetRgb(z,"21");
  12.             }
  13.             if (z == 2) {
  14.                 funcSetRgb(z,"3");
  15.             }
  16.             if (z == 3) {
  17.                 funcSetRgb(z,"9");
  18.             }
  19.             if (z == 4) {
  20.                 funcSetRgb(z,"15");
  21.             }
  22.         } else if (_root.rechteck == 2) {
  23.             // Rechteck mit den Abständen 4 und 8 von Ecke zu Ecke
  24.             // setCOLOR
  25.             setColor(z)
  26.             // setRGB
  27.             if (z == 1) {
  28.                 funcSetRgb(z,"22");
  29.             }
  30.             if (z == 2) {
  31.                 funcSetRgb(z,"2");
  32.             }
  33.             if (z == 3) {
  34.                 funcSetRgb(z,"10");
  35.             }
  36.             if (z == 4) {
  37.                 funcSetRgb(z,"14");
  38.             }
  39.         } else if (_root.rechteck == 3) {
  40.             //Rechteck mit den Abständen 2 und 12 von Ecke zu Ecke
  41.             // setCOLOR
  42.             setColor(z)
  43.             // setRGB
  44.             if (z == 1) {
  45.                 funcSetRgb(z,"23");
  46.             }
  47.             if (z == 2) {
  48.                 funcSetRgb(z,"1");
  49.             }
  50.             if (z == 3) {
  51.                 funcSetRgb(z,"11");
  52.             }
  53.             if (z == 4) {
  54.                 funcSetRgb(z,"13");
  55.             }
  56.         }
  57.     }
  58. }
  59. function setColor(col_z){
  60.     _root.kreis.auswahl["a"+col_z+"_col"] = new Color(_root.kreis.auswahl["a"+(col_z)]);
  61. }
  62. function setRgb(rgb_z, nummer){
  63.     _root.kreis.auswahl["a"+rgb_z+"_col"].setRGB(_root["farbkreis_f"][nummer]);
  64. }

bis dann - Merlin
__________________
dies ist der anfang vom rest deines lebens
merlinvs ist offline   Mit Zitat antworten
Alt 08-01-2005, 20:48   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
ActionScript:
  1. on (release) {
  2.     _root.menue_bg.gotoAndStop(23);
  3.     _root.kreis.rechteck.gotoAndStop(1);
  4.     var vCAry = [[21, 3, 9, 15], [22, 2, 10, 14], [23, 1, 11, 13]];
  5.     for (z=1; z<=4; ++z) {
  6.         ausw = "a"+z+"_col";
  7.         _root.kreis.auswahl[ausw] = new Color(_root.kreis.auswahl["a"+(z)]);
  8.         pos = vCAry[_root.rechteck-1][z-1];
  9.         _root.kreis.auswahl[ausw].setRGB(_root["farbkreis_f"][pos]);
  10.     }
  11. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 08-01-2005, 20:53   #4 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
wow, ok, an arrays hab ich gedacht, und auch schon angefangen, aber das das so sehr geht...
__________________
dies ist der anfang vom rest deines lebens
merlinvs ist offline   Mit Zitat antworten
Alt 08-01-2005, 21:31   #5 (permalink)
Wurstkind
 
Benutzerbild von Artworx3D
 
Registriert seit: Aug 2003
Ort: Bad Homburg
Beiträge: 62
Uii, das nenn ich mal komprimiert. vielen Dank. genau an sowas hab ich gedacht. ich werd das gleich mal ausprobieren. bin grad dabei mein fla etwas aufzuräumen.
Aber das sieht alles sehr gut aus!

AWX
Artworx3D ist offline   Mit Zitat antworten
Alt 08-01-2005, 21:59   #6 (permalink)
Wurstkind
 
Benutzerbild von Artworx3D
 
Registriert seit: Aug 2003
Ort: Bad Homburg
Beiträge: 62
beim ausprobieren is mir jez was aufgefallen. da der "code" noch nich ganz fertig war, als ich ihn gepostet habe*sehr boese* mit dem neuen "Supa"code was nicht funktioniert.
Und zwar: wenn _root.rechteck == 2 bzw 3 ist, im _root.kreis.rechteck.gotoAndStop (18 bzw. 30) angesteuert werden soll. - bei _root.rechteck==1 war das ja (1) - dass kann ich in den kurzen code leider nicht selber reinbauen, da ich noch versuche ihn vollständig zu verstehen.

zur sicherheit habe ich die aktuelle Version von meinem noch "schrott" FLA mal hochgeladen. (inzwischen funktionieren alle Rechtecke mit allen Farben)

F.Y.I. das is übrigens ein Grundlagen Hochschul Projekt, in dem die Technik von den Prof`s her erstmal gar keine Rolle spielt. Da ich so überhaupt keine ahnung habe freue ich mich sehr, dass ihr helft mein Flasch-Stümpertum zu reduzieren!

Danke aber für die äusserst lehrreichen Tips!
Angehängte Dateien
Dateityp: zip Farbkreis2.zip (35,3 KB, 7x aufgerufen)

Geändert von Artworx3D (08-01-2005 um 22:02 Uhr)
Artworx3D ist offline   Mit Zitat antworten
Alt 09-01-2005, 00:33   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
der zusammenhang ist doch offensichtlich. dein code wiederholt sich, mit ausnahme der zahlen. also brauchst du doch nur die zahlenwerte zu indezieren.
ActionScript:
  1. on (release) {
  2.     _root.menue_bg.gotoAndStop(2);
  3.     // array für = [_root.rechteck == 1 , _root.rechteck == 2 , _root.rechteck == 3]
  4.     // je inneres array = [gotoAndStop, z == 1,z == 2,z == 3,z == 4]
  5.     var vCAry = [[4, 0, 6, 12, 18], [9, 0, 4, 12, 16], [21, 0, 2, 12, 14]];
  6.     for (z=1; z<=4; ++z) {
  7.         pos = vCAry[_root.rechteck-1];
  8.         _root.kreis.rechteck.gotoAndStop(pos[0]);
  9.         ausw = "a"+z+"_col";
  10.         _root.kreis.auswahl[ausw] = new Color(_root.kreis.auswahl["a"+z]);
  11.         _root.kreis.auswahl[ausw].setRGB(_root["farbkreis_f"][pos[z]]);
  12.     }
  13. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 09-01-2005, 12:36   #8 (permalink)
Wurstkind
 
Benutzerbild von Artworx3D
 
Registriert seit: Aug 2003
Ort: Bad Homburg
Beiträge: 62
Hmm, Irgendwie funktioniert das nicht.
Die Farben kommen nicht richtig in die Auswahl (die erste Fläche wird mit der 2.Farbe gefüllt und dadurch erhält die 4. gar keine?!) und ich kann nicht das keyframe angeben, in dem die richtige position für das rechteck mit den "Pointern" ist.
Für Rechteck 1 is das auch frame 1 bei rechteck 2 ist das Frame 14 und bei Rechteck 3 Frame 30. (bei dieser Farbe).
Auf reder der Farben liegt so ein script und die rechtecke haben eine bestimte position im _root.kreis.rechteck...

Da ich noch ein beginner im scripten bin fällt es mit noch nicht so leicht durch die verschachtelungen der arrays zu steigen.
Mit deinem Code auf Lila sieht dass dann so aus:
Angehängte Dateien
Dateityp: zip Farbkreis_test.zip (23,5 KB, 2x aufgerufen)
Artworx3D ist offline   Mit Zitat antworten
Alt 09-01-2005, 20:12   #9 (permalink)
Wurstkind
 
Benutzerbild von Artworx3D
 
Registriert seit: Aug 2003
Ort: Bad Homburg
Beiträge: 62
also so klappts jez:
ActionScript:
  1. on (press) {
  2.     _root.menue_bg.gotoAndStop (23);
  3.     var vCAry = [[1, 21, 3, 9, 15], [18, 21, 1, 9, 13], [30, 21, 23, 9, 11]];
  4.     actual = vCAry[_root.rechteck-1];
  5.     _root.kreis.rechteck.gotoAndStop(actual[0]);   
  6.     for(z=1; z<=4; ++z){
  7.         _root.kreis.auswahl["a" + z + "_col"] = new Color (_root.kreis.auswahl["a" + (z)]);
  8.         _root.kreis.auswahl["a" + z + "_col"].setRGB(_root["farbkreis_f"][actual[z]]);
  9.     }
  10. }

Danke alle
Artworx3D 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 17:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele