Frag zu AS 1.0
lima-city → Forum → Die eigene Homepage → Flash und Silverlight
abhngigkeit
antwort
anweisung
ausdruck
beitrag
bezug
eckige klammer
fehler
funktion
gruss
hilfe
minus
mglicherweise
paste
punkten
schauen
schnippschnapp
schreck
vereinfachen gru
zurck
-
Hallo,
habe folgendes Problem und zwar habe ich 8 Movieclips mit den selben eigenschaften und möchte folgenden Code vereinfachen bzw. kürzen.
code:
this.mc1._visible = false;
this.mc2._visible = false;
this.mc3._visible = false;
this.mc4._visible = false;
this.mc5._visible = false;
this.mc6._visible = false;
this.mc7._visible = false;
this.mc8._visible = false;
zahl = random(8);
if (zahl == 0) {
this.mc1._visible = true;
} else if (zahl == 1) {
this.mc2._visible = true;
} else if (zahl == 2) {
this.mc3._visible = true;
} else if (zahl == 3) {
this.mc4._visible = true;
} else if (zahl == 4) {
this.mc5._visible = true;
} else if (zahl == 5) {
this.mc6._visible = true;
} else if (zahl == 6) {
_root.mc7._visible = true;
} else if (zahl == 7) {
this.mc8._visible = true;
}
with (mc1) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc2) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc3) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc4) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc5) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc6) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc7) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
}
with (mc8) {
_x = Math.floor(Math.random()*300);
_y = Math.floor(Math.random()*50);
Wie man seiht ist es immer daselbe bei 20 Movieclips müsste ich alles 20mal kopieren wie kann man dies vereinfachen ??
gruß phil -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
habe folgendes Problem und zwar habe ich 8 Movieclips mit den selben eigenschaften und möchte folgenden Code vereinfachen bzw. kürzen.
code:
>schnippschnapp
Wie man seiht ist es immer daselbe bei 20 Movieclips müsste ich alles 20mal kopieren wie kann man dies vereinfachen ??
gruß phil
Ungetestet und möglicherweise mit Fehlern. Wenns nicht funktioniert einfach antworten, vielleicht schau ich nochmal vorbei ;)
for (i=0; i<8; i++) { this["mc"+i]._visible = false; //oder auch //setProperty(eval("mc"+i), _visible, 0); with(eval("mc"+i)) { _x = Math.floor(Math.random()*300); _y = Math.floor(Math.random()*50); } } zahl = (random(8))-1; this["mc"+zahl]._visible = true; //oder auch //setProperty(eval("mc"+zahl), _visible, 1);
Gruß.
Edit flüsterte mir doch noch den einen oder anderen Fehler ;)
Beitrag geändert: 24.8.2007 4:28:21 von frameless -
danke mal für die antwort
müsste es nachher mal probieren.
this["mc"+i]._visible = false;
Warum eckige klammer ?
Nach jedem schleifendurchlauf würde der entsprechende mc unsichtbar, wär ne idee.
with(eval("mc"+i)) was bedeutet eval ??
zahl = (random(8))-1; Wieso mit -1 ?
Hast du die if anweisung absichtlich weggelassen ?
lg pdr -
danke mal für die antwort
müsste es nachher mal probieren.
this["mc"+i]._visible = false;
Warum eckige klammer ?
Nach jedem schleifendurchlauf würde der entsprechende mc unsichtbar, wär ne idee.
with(eval("mc"+i)) was bedeutet eval ??
Eckige Klammern und eval() geben jeweils den Bezug zu einem MC zurück. Im laufenden Programm wird also die Funktion
den entsprechenden richtigen Namen, in Abhängigkeit von i, zurückgeben, z.B. mc1. (In der Initialisierung musst du natürlich für i nicht 0, sondern 1 angeben...)eval("mc"+i)
zahl = (random(8))-1; Wieso mit -1 ?
Hast du die if anweisung absichtlich weggelassen ?
Das -1 sollte natürlich ein +1 sein und stellt nur den Ausdruck aus random() richtig, damit du mit 'zahl' auch deine wirkliche MC-zahl hast. Die if-Anweisung wurde absichtlich weggelassen und durch
ersetzt.this["mc"+zahl]._visible = true;
Gerade ist mir noch eingefallen, dass du das ganze noch ein bisschen vereinfachen könntest, indem du die random()-Funktion auch in der eval()-Funktion ausgiebst. Mit
könnte es auch funktionieren.setProperty(eval("mc"+random(8)+1), _visible, 1);
Gruß.
Edit flüsterte mir noch ein Fehlerchen zu... ;)
Beitrag geändert: 28.8.2007 1:18:06 von frameless -
ach du schreck,obwohl...
mal probiren
Würde mich dann über eine Antwort freuen, wenn's funktioniert. Oder nicht. ;)
Gruß. -
supi,danke für deine hilfe
so funktioniert es:
for (i=1; i<=35; i++) { this["mcl"+i]._visible = false; with(eval("mcl"+i)) { _x = Math.floor(Math.random()*300); _y = Math.floor(Math.random()*50); } } zahl = (random(34))+1; this["mcl"+zahl]._visible = true;
aber das wichtigste kommt erst noch...
this.onMouseDown = function() { if (this.mcl1._visible == true && this.mcl1.hitTest(_parent._xmouse, _parent._ymouse, true)) { _root.punkte += 10; this.mcl1._visible = false; }
dabei sollen bestimmte mcs minus punkte geben und bestimmte mcs + punkte aber das kann ich jetzt mit copy n' paste machen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage