Du gibst beim Duplizieren dem MC doch einen Namen, über diesen kannst du dem Duplikat doch auch Funktionen geben.
Hi,
einen Movieclip will ich duplizieren. Soweit kein Problem. Der neue Clip soll aber eine gewisse Funktionalität haben, die der alte nicht hatte. Wenn ich auf den Originalclip klicke, wird dieser dupliziert. Den neuen Clip will ich aber unter anderem ziehen können per startDrag. Der "alte" auf den ich klicke soll diese Funktion nicht haben. Wie kann ich einem Clip eine neue Funktion hinzufügen. Oder sollte ich eher einen anderen Weg gehen?
Du gibst beim Duplizieren dem MC doch einen Namen, über diesen kannst du dem Duplikat doch auch Funktionen geben.
Das Problem ist, das ich für jeden duplizierten Clip die Funktion erstellen will und nicht jeden einzeln anspreche. Beispiel
duplicateMovieClip (_root.kreis, "kreis"+vnr,0);
jetzt soll jeder kreis1, kreis2 usw. die funktion bekommen
aber
"kreis"+vnr. oder kreis+vnr oder ähnliches funktioniert nicht um das Objekt anzusprechen
_root["kreis"+vnr].onRelease = function ()
Sollte das mit diesem Syntax immer noch nicht gehen, solltest du mal deine FLA mit den Anfängen anhängen.
Werde ich mal probieren. Muss zwischen _root und [ ... ] kein Punkt? Und was für eine Notation ist das. Hab ich so noch nirgends gesehen? Hast du nähere Informationen dazu?
Nein, da darf kein Punkt zwischen.
Das ist die Schreibweise für Arrays. Alle verschachtelten Elemente sind eigentlich nichts anderes als Arrays.
Mehr Info kann ich dir dazu nicht geben.
Hi,
das funktioniert soweit. Das Problem ist, wenn ich meinen ersten Kreis bewegt habe und nochmal auf den "Duplizieren" Kreis drücke, wird der vorherige gelöscht, bzw. verschwindet vom Bildschirm. Habe mit den Debugger mal reingeschaut, der verschwindet wirklich, obwohl sich die Bezeichnung ändert...
Was mache ich falsch?
vnr=0;
// Bei Klick auf Navigationskreis wird neuer Node angelegt
_root.vertex.onPress=function()
{
++vnr;
// Duplikat zum Ziehen anlegen (selbe Koordinaten wie angeklickter Knoten)
duplicateMovieClip (_root.vertex, "vertex"+vnr, _root.vertex_nav._x);
//Position festlegen
setProperty ("vertex"+vnr, _x, _root.vertex._x);
setProperty ("vertex"+vnr, _y, _root.vertex._y);
// Funktion zum Bewegen für einzelnen Knoten
_root["vertex"+vnr].move =function(bool)
{
if(bool) { startDrag(this,true); } else { stopDrag();}
}
_root["vertex"+vnr].onPress=function() {this.move(1);}
_root["vertex"+vnr].onRelease=function() {this.move(0);}
} // end onPress VertexNavi
bitte die fla hochladen, wir haben nicht immer die zeit,hier alles nachzubauen ...
Hier also die fla :-)
Das hängt mit der Angabe der Stufe der duplizierten Elemente zusammen.
_root.vertex_nav._x ist immer der selbe Wert, damit wird dann also das Element auf der existierenden Stufe ersetzte.
duplicateMovieClip(_root.vertex, "vertex"+vnr, vnr);
Und du hast das Problem nicht mehr. Mehr dazu findest du in der Hilfe zum Befehl.
Aber dann könnten sich die Clips doch überlaüppen, d.h. ein Kreis könnte den anderen verdecken? Dies will ich verhindern.
Noch ne Frage. Ich will die Kreise die ich mir selbst wähle mit ner Linie verbinden. Was wäre da ein guter Ansatz zu ner Lösung?
ich will wenn ich zwei Kreise ausgewählt habe (das dürfte kein Problem sein) diese Verbinden mit einer Linie oder ähnlichen. Meiner Meinung nach dürfte sich das etwas schwierig gestalten. Deshalb wäre ich über jede Antwort froh.
Sicher können sich die dann überlappen, immerhin arbeitet Flash Ebenenbasiert.
Verhindern kannst du es mit einer Kollisionserkennung (hitTest) und einer entsprechenden Verschiebung.
Linien zeichnen, klar geht das, einfach zeichnen lassen (lineTo).
Eine Auswahl, da musst du die halt eine Auswahlfunktion schreiben, die die selektierten in ein Array aufnimmt und diese dann mit Linien verbinden lassen.
Tipp zur Auswahl: EInmal klicken = markiert, nochmals klicken = demarkiert.
Zur visuellen Kontrolle die Farbe der selektierten Elemente ändern lassen.
Alles in Allem keine Kleinigekeit, aber machbar ...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)