Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-06-2005, 21:34   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
verschiedene variable Arrayas ansprechen

So mein ziel ist es, verschiedene "vierecke" bzw. felder zu haben, die sich später später auf befehl (click) auflösen und das in ganz viele kleine kästchen. also z.b. klickt man auf einen button und dann lösen sich die vier felder unten links in zufälliger weiße nach und nach auf (also man sieht dann das was da drunter ist... ich hoffe es ist verständlich...

wie auch immer, irgendwie komme ich nicht weiter und zwar bei dem "onEnterFrame": wenn ich mehr als ein feld gleichzeitig auflösen möchte, löst er zawr bei allen ausgewählten felder auf, allerdings stoppt er sehr früh, weil der "couter" (farr[n][3]) komplett runtergezählt hat, und nicht nur für das dazugehörige feld farr[n] . zumindest war das so als ich das probiert, mir kam dann die idee das über ein weiteres feld in dem array farr laufen zu lassen, das hab ich aber nicht ansatzweise zum laufen gekriegt...

ActionScript:
  1. farr = new Array();
  2. function makematrix(nam, posx, posy, x, y, color, depth) {
  3.     farr.push(Array(nam, x, y, 0));
  4.     _root.createEmptyMovieClip(nam, depth);
  5.     p = 0;
  6.     for (i=1; i<=x; i++) {
  7.         for (j=1; j<=y; j++) {
  8.             if (p == 0) {
  9.                 _root[nam].createEmptyMovieClip("x"+p, p++);
  10.                 with (_root[nam]["x"+p]) {
  11.                     _x = posx+(5*i);
  12.                     _y = posy+(5*j);
  13.                     beginFill("0x"+color, 100);
  14.                     lineStyle(0, "0x"+color, 0);
  15.                     lineTo(0, 0);
  16.                     lineTo(5, 0);
  17.                     lineTo(5, 5);
  18.                     lineTo(0, 5);
  19.                     lineTo(0, 0);
  20.                     endFill;
  21.                 }
  22.             } else {
  23.                 _root[nam]["x1"].duplicateMovieClip("x"+p, p++);
  24.                 with (_root[nam]["x"+p]) {
  25.                     _x = posx+(5*i);
  26.                     _y = posy+(5*j);
  27.                 }
  28.             }
  29.         }
  30.     }
  31. }
  32. makematrix("field0", 150, 110, 23, 23, "00ff00", 100);
  33. makematrix("field1", 270, 110, 23, 23, "ff00ff", 101);
  34. makematrix("field2", 390, 110, 23, 23, "ff00ff", 102);
  35. makematrix("field3", 150, 230, 23, 23, "ff00ff", 103);
  36. makematrix("field4", 270, 230, 23, 23, "ff00ff", 104);
  37. makematrix("field5", 390, 230, 23, 23, "ff00ff", 105);
  38. makematrix("field6", 150, 350, 23, 23, "ff00ff", 106);
  39. makematrix("field7", 270, 350, 23, 23, "ff00ff", 107);
  40. makematrix("field8", 390, 350, 23, 23, "ff00ff", 108);
  41. nfo = new Array();
  42. function shootout(nam) {
  43.     for (n=0; n<farr.length; n++) {
  44.         if (farr[n][0] == nam) {
  45.             nfo.push(nam);
  46.             for (m=1; m<=farr[n][1]*farr[n][2]; m++) {
  47.                 farr[n][3].push(m);
  48.             }
  49.         }
  50.     }
  51.     _root.onEnterFrame = function() {
  52.         for (g=0; g<nfo.length; g++) {
  53.             alpha(nfo[g]);
  54.         }
  55.     };
  56. }
  57. function alpha(nam) {
  58.     for (n=0; n<farr.length; n++) {
  59.         if (farr[n][0] == nam) {
  60.             for (k=0; k<100; k++) {
  61.                 if (farr[n][0][3].length>0) {
  62.                     r = random(farr[n][0][3].length);
  63.                     _root[nam]["x"+farr[n][0][3][r]]._alpha = 0;
  64.                     if (_root[nam]["x"+rs[r]]._alpha == 0) {
  65.                         _root[nam][van].splice(r, 1);
  66.                     }
  67.                 } else {
  68.                     delete _root[nam].onEnterFrame;
  69.                     break;
  70.                 }
  71.             }
  72.         }
  73.     }
  74. }
  75. start = false;
  76. _root.but.onRollOver = function() {
  77.     trace("Rollover!");
  78.     if (start == false) {
  79.         shootout("field8");
  80.         shootout("field5");    
  81.     }
  82.     start = true;
  83. };

Geändert von trebek (23-06-2005 um 21:35 Uhr)
trebek ist offline   Mit Zitat antworten
Alt 24-06-2005, 00:53   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Gibts da noch mehr script?

delete _root[nam].onEnterFrame; wozu gehört des?

ne forschleife in einem onEnterFrame macht eigentlich keinen sinn!!

_root.onEnterFrame = function() {
for (g=0; g<nfo.length; g++) {
alpha(nfo[g]);
}
};
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 24-06-2005, 11:02   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
ne mehr script gibt es nicht, aber das


delete _root[nam].onEnterFrame;


bezieht sich auf


_root.onEnterFrame = function() {
for (g=0; g<nfo.length; g++) {
alpha(nfo[g]);
}
};


hab es gestern abend nochmal korrigiert heißt jetzt:
delete _root.onEnterFrame;


die for schleife ist ja drinne um die gleiche funktion mir mehreren variablen aufzurufen.. aber ich probiere mal was aus )

Geändert von trebek (24-06-2005 um 11:04 Uhr)
trebek ist offline   Mit Zitat antworten
Alt 24-06-2005, 11:24   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
ich hatte mir das so überlegt, in makematrix wird ein "großes" feld erzeugt, das aus vielen kleinen 5 *5 px großen feldern besteht. so nun soll man mit einer mausauf einen button klicken (im moment noch rollover) und dann fangen die kästchen an ihr alpha zu verlieren, aber halt zufällig...
dazu hatte ich mir folgendes überlegt, der movieclip eines jeden "großen" feld hat einen eigenen namen, somit sind die kleinenfelder innerhalb des movieclips mit x1-xn durchnummeriert. nun füllt man ein array mit den zahlen bis n.
macht man jetzt ein random(array.länge) spruckt er mir nezahl aus, die dazwischen liegt, jetzt setzt man den alpha wert von diesem kleinen feld auf null und löscht diese zeile aus dem array. somit hat man noch die übrig gebliebenen felder...

was ich gestern abend noch probiert habe, ist nicht der weg über das array, sondern einfach eine "do { } while ()" schleife bei der er solange mit random(n) eine zahl gesucht wird bis man eine gefunden hat wo der alpha wert nicht gleich null ist, funktioniert auch gut bisauf das ich irgendwie das mit dem stoppen nicht hinkriege, d.h. er macht entweder zu wenig felder weiß oder er macht zu viele sprich er hängt sich auf weil er halt keinen mehr findet wo alpha nicht gleich null ist...
trebek 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 14:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele