Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-02-2007, 08:32   #1 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Tiefe von Movieclips mit swapDepths ändern

Hallo,
ich kann mir nicht vorstellen, dass das, was ich machen möchte, nicht geht.
Allerdings habe ich wohl noch nicht den richtigen Ansatz.

ich brauche für ein Menue die Möglichkeit die Reihenfolge von MovieClips zu ändern.
Ich möchte allerdings nicht einen Film mit einem anderen vertauschen (zB: MC1 mit MC2 ).
Wenn ich mich durch das Menue bewege(per Scrollbalken nach rechts), soll der oberste MC zum Untersten werden.
Er slidet nach links raus ändert seine Tiefe und legt sich unter den Untersten.
Wenn ich den Scrollbalken nach links ziehe, soll das Ganze andersrum laufen.
Der unterste verschwindet, ändert seine Tiefe und slidet als oberster MC von links rein.

Da ich alle MCs ansprechen muss – sie verändern ihre Größe, Position, und den Alphawert in Abhängigkeit zur Ebene, auf der sie sich befinden – habe ich mir folgenden Ansatz überlegt:
Ich habe ein Array in dem die Reihenfolge der Filme gespeichert wird.
zB bewegungs_arr(0,1,2,3,4)
Wenn ich jetzt den MC2 oben haben will soll MC0 hinter die 4 und MC1 hinter die 0 rutschen.
zB: bewegungs_arr(2,3,4,0,1)
PHP-Code:
// arrayPos ist in diesem Fall die Nummer, die vom Scroller übergeben wird
function blaettern(arrayPos){
    
//this.onEnterFrame = function(){// das Ganze soll erst einmal nacheinander funktionieren
//};
        //
        
var nr bewegungs_arr[0];// bewegungs_arr(0,1,2,3)
        
var tiefsteNr 200 markenAnzahl;
        
trace("nr ="+nr);
        
trace("tiefsteNr ="+tiefsteNr);
        
// hier wird der ersteFilm auf die Tiefste Position gesetzt
        
if(bewegungs_arr[0] < arrayPos){
            
this["blattfilm_mc"+nr].swapDepths(tiefsteNr);
        }
        
// Aufbau der neuen Reihenfolge im Array
        
bewegungs_arr.shift();// den ersten Wert löschen
        
bewegungs_arr.push(nr);// hinten dranhängen
        
trace("bewegungs_arr = "+bewegungs_arr);
        
// Alle Filme eine Ebene hochsetzen
        
for(i=0;i<markenAnzahl;i++){
            
this["blattfilm_mc"+i].swapDepths((this["blattfilm_mc"+i].getDepth()+1));
            
trace("tiefe von blattfilm_mc"+i+" ist ="+this["blattfilm_mc"+i].getDepth());
        }

Dabei kommt folgendes raus:
Auswahl des zweiten MCs:
nr =0
tiefsteNr =196
bewegungs_arr = 1,2,3,0
tiefe von blattfilm_mc0 ist =197 >ok
tiefe von blattfilm_mc1 ist =200 >ok
tiefe von blattfilm_mc2 ist =199 >ok
tiefe von blattfilm_mc3 ist =197 > müsste doch 198 sein

Auswahl des dritten MCs
nr =1
tiefsteNr =196
bewegungs_arr = 2,3,0,1
tiefe von blattfilm_mc0 ist =201 >müsste doch 198 sein
tiefe von blattfilm_mc1 ist =197 >ok
tiefe von blattfilm_mc2 ist =200 >ok
tiefe von blattfilm_mc3 ist =197 > müsste doch 199 sein
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 08:49   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Ich würde das anders machen, denn du iterierst anscheinend kontinuierlich die Tiefen (bei jedem Blättern).

Mach doch einfach ein Array mit Tiefenwerten, die du dann einfach mit setDepth() den MovieClips zuweist.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:04   #3 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Wow, das nenne ich eine schnelle Antwort... Danke!
Ich werd mal Deinen Vorschlag ausprobieren.
Allerdings ist mir nicht klar, warum das klappen sollte und mein Script so einen Fehler verursacht.
Versuch macht klug...
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:06   #4 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
...immer erst richtig lesen...
auf setDepth() bin ich noch gar nicht gekommen
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:13   #5 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
???
finde setDepth() weder in der Hilfe noch in der Dokumentation.
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:42   #6 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
habs gefunden:
die forschleife war verkehrt und so ist es richtig:
PHP-Code:
 for(i=0;i<markenAnzahl;i++){ 
            
this["blattfilm_mc"+bewegungs_arr[i]].swapDepths((this["blattfilm_mc"+bewegungs_arr[i]].getDepth()+1)); 
            
trace("tiefe von blattfilm_mc"+bewegungs_arr[i]+" ist ="+this["blattfilm_mc"+bewegungs_arr[i]].getDepth()); 
        } 
jetzt muss ich das Ganze nur noch schön machen
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:44   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Ha, ich auch nicht lol... sorry... ich hatte da so eine Erinnerung. Die war falsch.

Ich weiss gerade auch nicht, ob das generell so eine gute Idee war.

ActionScript:
  1. this["blattfilm_mc"+i].swapDepths((this["blattfilm_mc"+j].getDepth()));
'i' und 'j' sind nicht gleich, du swapst also die Tiefen deiner MovieClips, so wie du sie brauchst. Das ist besser... denke ich.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-02-2007, 09:45   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Genau, das "+1" am Ende von deinem Code kann und sollte auch weg.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-02-2007, 10:03   #9 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
Zitat:
Zitat von Omega Psi Beitrag anzeigen
ActionScript:
  1. this["blattfilm_mc"+i].swapDepths((this["blattfilm_mc"+j].getDepth()));
tausche ich damit nicht nur die Tiefen zweier Filme aus?
Also aus 1 wird 4 und aus 4 wird 1.
Ich möchte doch aus einer Reihenfolge (0,1,2,3,4) die Reihenfolge (1,2,3,4,0) machen.

...und wieso sollte man ...getDepth()+1) nicht schreiben?
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 10:18   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Das mit dem "+1" ist unsinnig, weil du ja schon die Tiefen swapst (vertauscht).

Und mit dem swapDepths vertauscht du einfach in einer Schleife, in die richtige Reihenfolge.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-02-2007, 11:20   #11 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
ok.
Allerdings mache ich das, damit ich für den nächsten Durchgang die tiefste Ebene kenne.
Ich dachte man könnte einen MC nur in eine Ebene swapen, die frei ist!?
Ansonsten müsste ich doch beim Start der Funktion jedesmal abfragen, welche Ebenen belegt sind und welche die Tiefste ist.
So bewege ich mich bei fünf Marken immer zwischen den Ebenen 200 und 195 und andersrum zwischen 196 und 201.
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)

Geändert von Marcellus (07-02-2007 um 11:23 Uhr)
Marcellus ist offline   Mit Zitat antworten
Alt 07-02-2007, 11:34   #12 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
http://livedocs.macromedia.com/flash...rt4_ASLR2.html

Du wirst doch bei den Sortierungen ein Muster haben, wie auch die Tiefen anzuordnen sind, in Abhängigkeit von den Positionen. So sortierst du die Dinger dann einfach um.
Omega Psi ist offline   Mit Zitat antworten
Alt 07-02-2007, 13:37   #13 (permalink)
alter User
 
Benutzerbild von Marcellus
 
Registriert seit: Jun 2001
Ort: GE
Beiträge: 416
jau, habs gelöst.
Die Filme werden per Loop auf die neue Ebene gesetzt.
Ich hätte gedacht, dass es dabei Ärger gibt
Aber es läuft.
Nochmals vielen Dank für die schnelle Hilfe.
__________________
Gruss
Marcellus

Ich bin nicht mehr jung genug, um alles zu wissen.(O.Wilde)

Ein Mensch weiß nicht, was er weiß, bevor er weiß, was er nicht weiß.(T.Carlyle)
Marcellus 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 10:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele