Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-02-2006, 23:08   #1 (permalink)
************
 
Registriert seit: Jul 2001
Beiträge: 143
Zufällige Objektbahnen verteilen und für x Frames blocken

Hier einen kleine Aufgabe, deren Lösung mir bisher nicht eingefallen ist:

Wir haben drei "Bahnen", auf denen sich Objekte bewegen sollen. Ihre Bewegung steuern die Objekte selbst, wenn Sie wissen, auf welcher Bahn sie sich befinden. Es geht als ausschließlich darum, die Objekte so auf die Bahnen zu positionieren, dass Sie einen vorgegebenen Minimalabstand (in Frames) nicht unterschreiten UND dass sich die Bahnwahl und die Häufigkeit der Objekte nach Zufallswerten richten. Wobei die Objekte unterschiedliche Wertigkeiten erhalten sollen, sprich in unterschiedlicher Häufigkeit auftreten sollen.

Im Beispiel gehen wir von drei möglichen Bahnen und vier verschiedenen Objekten aus:

PHP-Code:
bahnen = new Array (1,2,3);
objekte = new Array ("objekt1","objekt2","objekt3","objekt4");
objekthaeufigkeit =  new Array ("40","20","30","80");  // Analog zu dem Objekten
mindestabstand 40// in Frames
counter 10// Zähler für die Platzierung der Objekte 
Ein erster Ansatz:
Es werden die Objekte einzeln per Zufall ausgewürfelt und bei erfolgreicher Auswahl wird das Objekt auf eine zufällige Bahn platziert. Diese wird dem Bahnen-Array entnommen, da sie ab diesem Zeitpunkt für die Dauer des Mindestabstandes (40 Frames) nicht mehr zur Verfügung stehen darf:

PHP-Code:
onEnterFrame = function(){
    if(
bahnen.length 0){
        for(
i=0i<objekte.lengthi++){
            
zufallszahl random(objekthaeufigkeit[i]);
            if (
zufallszahl == 1){
                
zufall random(bahnen.length); // ... Bahn wählen
                
bahnwahl bahnen.splice(zufall,1); // ... Bahn aus Array entnehmen
                
duplicateMovieClip(objekte[i], "objekt"+countercounter); // ... Objekt positionieren
                
["objekt"+counter].bahn bahnwahl// Objekt über die Bahnwahl informieren
                
counter++;
            }
        }
    } else {
        
// ...
    
}

Frage:
Wie kontrolliert man, wieviele Frames bei den einzelnen rausgenommenen Bahnen vergangen sind, und wie füge man die Bahnen dem Pool wieder zu, sobald der Mindestabstand überschritten wurde?

Problem:
Wenn eine Bahn aus dem Arrray entnommen wird, verändern sich in dem Array die Positionen der verbleibenden Werte. Man müsste also nicht nur den Bahnwert entnehmen, sondern auch zusätzlich Speichern, um ihn nicht zu verlieren. Das funktioniert aber nicht mit dem Ansatz oben, da hier der Bahnwert in der Variable "bahnwahl" bei jeder Platzierung wieder überschrieben wird. Also bräuchte man drei eindeutige Variablen, die die gesperrten Bahnen enthalten. Oder ein Array? Aber wie vergleicht man dann die einzelnen Werte? Und wie administriert man die Variablen zur Speicherung, um immer die zu nehmen, die gerade leer ist? Kann der Schlüssel darin liegen, in irgendeiner Form die Stammpositionen der Bahnen innerhalb des Ausgangsarrays zu wahren?

Geändert von zellteilung (05-02-2006 um 23:09 Uhr)
zellteilung 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 15:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele