Drag and Drop Problem

Bunny1502

Mitglied
Hallo!

Ich habe folgendes Problem:
Wenn man ein Symbol (hier: "firstsymbol") anklickt, soll dieses duplizert werden und das Duplikat gleichzeit mittels Drag and Drop verschoben werden.
Nach dem Loslassen soll es aber weiterhin möglich sein, das duplizerte Symbol mit Drag and Drop zu verschieben.

Ich hab da mal was ausprobiert, das funktioniert aber noch nicht richtig:

PHP:
firstSymbol.onPress = function() {
   duplicateMovieClip(firstSymbol,"Symbol",this.getNextHighestDepth());
    Symbol.startDrag();
}

firstSymbol.onRelease = firstSymbol.onReleaseOutside = function() {
    Symbol.stopDrag();
}

Symbol.onPress = function(){
    this.startDrag();
    }
Symbol.onRelease = Symbol.onReleaseOutside = function(){
    this.stopDrag();
    }
Außerdem würde ich das Ganze gerne innerhalb einer Schleife ausführen, damit man mehre Duplikate erstellen kann.

Kann mir jemand weiterhelfen?

Gruß, Bunny1502
 
Hi,

dort, wo Du die onPress-Handler für "Symbol" definierst, ist dieses Objekt noch gar nicht bekannt. ;) Probiers mal so:
Code:
firstSymbol.onPress = function() {
    var Symbol = this.duplicateMovieClip("Symbol",this._parent.getNextHighestDepth());
    Symbol.onPress = function(){
        this.startDrag();
    }
    Symbol.onRelease = Symbol.onReleaseOutside = function(){
        this.stopDrag();
    } 
    Symbol.startDrag();
}

firstSymbol.onRelease = firstSymbol.onReleaseOutside = function() {
    this._parent["Symbol"].stopDrag();
}

Gruß
.
 
Aber ich hab jetzt noch eine Frage:
Wie kann ich denn angeben, dass alle Instanzen unterschiedliche Namen haben und ich nur eine betimmte Anzahl erzeugen kann? Dachte mit einer Schleife:
In der Art:
PHP:
for(var i=0; i<10; i++){
    firstSymbol.onPress = function() {
        var Symbol = this.duplicateMovieClip("Symbol"+i,this._parent.getNextHighestDepth());
        Symbol.onPress = function(){
            this.startDrag();
        }
        Symbol.onRelease = Symbol.onReleaseOutside = function(){
            this.stopDrag();
        } 
        Symbol.startDrag();
    }

    firstSymbol.onRelease = firstSymbol.onReleaseOutside = function() {
        this._parent["Symbol"+i].stopDrag();
    }
}
 
Hi,

Du musst "i" im onPress-Handlers hochzählen; was Du machst ist, 10 mal den selben Handler zu definieren ...

Im Anhang findest Du ein entsprechendes Beispiel.

Gruß
.
.
 

Anhänge

  • 26385attachment.zip
    8,4 KB · Aufrufe: 13
Klappt alles ganz gut, aber nun kommt schon wieder die nächste Frage auf:

Die duplizerten MCs befinden sich nun über allen andern Elementen innerhalb meines fla's, obwohl die anderen Elemente auf einer höhren Ebene liegen wie firstSymbol.
Über der Ebene auf der firstSymbol liegt, liegt sogar noch eine Maske, damit die Symbole nur in einem bestimmten Bereich zusehen sind, aber auch das wirkt sich nicht auf die Duplikate aus. Liegt das an getNextHighestDepth() ? Davon hab ich nämlich Null Ahnung.
Wie kann ich beheben, dass die duplizierten Instanzen über allem anderen liegen?
 
Liegt das an getNextHighestDepth()
Ja, "Ebenen" werden zur Laufzeit nicht berücksichtigt - sie dienen eigentlich nur der Übersicht zur Entwurfszeit und legen dort u.a. die Stapelreihenfolge fest.

Willst Du die Duplikate unter weiteren Objekten erstellen, solltest Du das Original in einen weiteren MovieClip verpacken (duplicateMovieClip erstellt die Kopien immer auf der Zeitleiste, auf der auch das Original liegt).

Alternativ könntest Du statt duplicateMovieClip attachMovie verwenden und die Kopien aus der Bibliothek holen (dann kannst Du dafür das Ziel auch frei wählen), was in den meisten Fällen die elegantere und einfachere Lösung darstellt.

Gruß
.
 
Noch einmal eine Frage:
Ich habe cloneMc so geändert, dass das duplizierte Symbol gelöscht wird, wenn man es ein zweites Mal verschiebt:
PHP:
 newOne.onRelease = newOne.onReleaseOutside = function() {
                           this.stopDrag();
                           this.removeMovieClip("dup" + current);
                           }
Current wir in diesem Fall ganz normal weiter hoch gezählt. Ich würde das gerne so ändern, dass wenn man ein neues Symbol erstellt, erst wieder die gelöschte Nummer bzw. die gelöschten Nummern erstellt werden und erst danach current weiter hochzählt.

Wenn ich current--; einfüge funktioniert es ja nur solange ich die Symbole direkt nach dem ich sie erstellt habe ein zweites Mal verschiebe. Verschiebe ich nachträglich ein Symbol und erstelle anschießend ein Neues wird das letzte natürlich doppelt erstellt.

Kann ich das irgendwie realisieren?
 
Zurück