Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-05-2005, 16:13   #1 (permalink)
---
 
Benutzerbild von LeBensch
 
Registriert seit: Jan 2002
Ort: Baden-Baden
Beiträge: 172
gesteuerter Zufall?

Hallo zusammen,
ich hab folgendes Problem:

Auf einem leeren MC liegt dieses Script:
ActionScript:
  1. onClipEvent(load){
  2.     this.attachMovie("text", "text01", 0);
  3.     this.text01._x = 0;
  4.     this.text01._y = 0
  5.     for (z=1;z<41;z++){
  6.         this.attachMovie("linie", "linie"+z, z);
  7.         this["linie"+z]._y = z;
  8.         this["linie"+z]._x = 0;
  9.     }
  10. }
  11. onClipEvent(enterFrame){
  12.     zufall = Math.round(Math.random()*40);
  13.     this["linie"+zufall].removeMovieClip();
  14. }

Hier wird also beim ersten Laden des leeren MCs ein Text-MC sowie 40 Linien-MCs attached. Die Linien liegen dicht an dicht aneinander und bedecken den Text-MC. So weit so gut, das funktioniert auch!
Nun will ich zur Laufzeit einen Linien-MC nach dem anderen wieder entfernen; und dies in zufälliger Reihenfolge. So wie ich die enterFrame-Prozedur bisher realisiert habe, werden zwar alle Linien irgendwann gelöscht, aber mit großer Wahrscheinlichkeit kommt es vor, dass versucht wird ein und denselben Linien-MC mehrmals zu löschen, da die Zufallsvariable ja öfters mal den selben Wert annehmen kann. Wie kann ich es nun aber realisieren, dass bereits entfernte Linien-MCs bei der Auswahl meiner Zufallsvariable nicht mehr berücksichtigt werden und somit alle Linien-MCs nacheinander aber in zufälliger Reihenfolge gelöscht werden. Hat jemand ne Idee?

Vielen Dank schonmal im voraus für eure Mühe
LeBensch
__________________
Es gibt nichts gutes, außer man tut es
--
Wenn man keine Ahnung hat: Einfach mal die Fresse halten!
--
Helga: Hägar, du hörst immer nur was du hören willst. Du bist der perfekte Ignorant!
Hägar: Perfekt? Meinst du wirklich?
--
Die Dinge im Leben sind nicht nur schwarz oder weiß. Sie existieren in einem Kontinuum von Graustufen und diese sind im besten Falle auch noch bunt!
LeBensch ist offline   Mit Zitat antworten
Alt 31-05-2005, 16:31   #2 (permalink)
Neuer User
 
Registriert seit: May 2005
Beiträge: 1
Auf die schnelle gesagt würde ich mir in der onClipEvent(load) einen Array mit vierzig Feldern anlegen. In der folgenden for-schleife das entsprechende Feld des Arrays mit 1 oder True belegen.

in onClipEvent(enterFrame) kannst du dann mit einer if-Abfrage testen ob Array[zufall] == 1. Wenn ja: löschen und Array[zufall]=0. Ansonsten in einer while-Schleife zufall inkrementieren bis Array[zufall] == 1. Dann löschst du den entsprechenden Clip und setzt den Wert im Array auf 0. Wenn der Index der while-Schleife die Länge des Arrays erreicht hat bevor eine 1 gefunden wurde, setzt du den Zähler wieder auf 1.

Somit erreichst du, das immer der folgende vorhandene Balken gelöscht wird.

Grüße,
empusa
empusa ist offline   Mit Zitat antworten
Alt 31-05-2005, 16:38   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...oder so:
ActionScript:
  1. var linien = [];
  2. for (z=1; z<41; z++) {
  3.     linien.push(z);
  4. }
  5. this.removeMC.onEnterFrame = function() {
  6.     var linie = Math.round(Math.random()*(linien.length-1));
  7.     this._parent["linie"+linie].removeMovieClip();
  8.     linien.splice(linie, 1);
  9.     if(linien.length == 0)
  10.     {delete this.onEnterFrame
  11.     }
  12. };
Brauchst dann noch einen MC Namens "removeMC"...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele