Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-08-2004, 19:39   #1 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
duplicate methode um ziel(pfad) erweitern statt tiefe

hi, ich würde gerne mcs auf beliebigen ebenen an beliebige ziele duplizieren, nicht nur auf der gleichen ebene in eine bestimmte tiefel. wenn man die movieclipklasse um eine neue methode erweitert, würde das doch sicherlich gehen, oder? hat das schon jemand gemacht, oder ne idee, wie ich das anstellen könnte (wo ich den level in der duplicateMovie()-methode durch einen pfad ersetzen kann)?
thnx

Geändert von zungenbrecher (16-08-2004 um 14:23 Uhr)
zungenbrecher ist offline   Mit Zitat antworten
Alt 15-08-2004, 23:06   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das hört sich für mich sehr verworren und nach gefährlichem Halbwissen an

Schau dir mal in der Flashhilfe die Syntax für attachMovie und duplicateMovieClip an. attachMovie zieht zur Laufzeit eine Kopie eines in der Bibliothek liegenden MCs auf die Bühne auf eine gewünschte Tiefenebene. Diese Tiefenebene liegt auf Level 0. Jeder Level hat mehrere Millionen Tiefenebenen, deswegen reicht der Level 0 wohl in den meisten Fällen auch aus. "Ebenen" werden wiederum die Tiefenebenen der Bühne benannnt. MCs die auf den Tiefenebenen liegen, können durch swapDepths zur Laufzeit auf eine andere Tiefenbene verschoben werden.

duplicateMovieClip macht dasselbe wie attachMovie, nur wird der MC nicht aus der Bibliothek attacht, sondern von der Bühne kopiert, d.h. der MC muss schon auf der Bühne liegen.
  Mit Zitat antworten
Alt 16-08-2004, 14:00   #3 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
danke,
ich weiß aber nicht, ob ich mit swapDepth wirklich weiterkomme. das problem ist, ich erzeuge beim laden dynamisch elemente, die wiederum leere mcs mit bilder, swfs oder textfelder erzeugen. das passiert dann logischerweise auf _level0. dann auf tiefe 1-n. ich kann aber nicht verschachteln, nur falls _level0.element0 erzeugt ist, kann ich auch _level0.element0.element1 erzeugen, oder halt _level0.element1 usw.
später brauche ich aber element1 von _level0 z.b. in einem erst später hinzugeladenen mc. z.b. _level1.mc1.mc2.element1. es ist mir aber nicht gelungen, das ziel für das laden, bzw. erzeugen frei zu wählen, weil die ziele zu z.t. noch gar nicht existieren, also würde ich die elemente gerne später zur laufzeit frei verschieben, bzw. duplizieren, und am alten ort löschen, verstanden, was ich meine?
wenn ich statt eines numerischen wertes in ziel einen kompletten pfad angeben könnte, wäre mir schon geholfen, doch dazu müsste ich mir wohl eine variante von duplicateMovieclip() bauen.
zungenbrecher ist offline   Mit Zitat antworten
Alt 16-08-2004, 22:03   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wenn du auf Tiefe 1-n etwas installierst, kommst du in die statischen Bühnenebenen. Du solltest auf jeden Fall auf 1+n attachen/duplizieren, weil das die dynamischen Ebenen sind.

MCs kannst du natürlich nur auf vorhandenen Zeitleisten bzw. in vorhandenen MCs erzeugen.

Ich verstehe allerdings dein Problem noch nicht so ganz. Wenn du einen MC löschen willst, muss dieser auf einer dynamischen Ebene (also ab +1) liegen und kann dann mit removeMovieClip gelöscht werden. Ob der MC dann irgendwo verschachtelt ist, ist unwichtig, solange der entsprechende richtige Objektpfad angegeben wird, z.B.:
ActionScript:
  1. _level0.mc1.mc2.removeMovieClip();
  2. _root.mc1.mc2.mc3.removeMovieClip();
  3. //oder in Schleifen
  4. for (var i=2;i<7;i++){//von 2 - 6
  5.    _level0.mc1["mc"+i].removeMovieClip();//mc2-6 in mc1 auf Level 0 löschen
  6. }
  Mit Zitat antworten
Alt 17-08-2004, 12:36   #5 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
"1-n" sollte 1 bis n heißen, wobei n immer positiv ist, das ist nicht mein problem.
ich will einfach das machen können:

ActionScript:
  1. mc.duplicateMovieClip ("neuer_name", ziel);
  2. _root.element0.element1.duplicateMovieclip("dupliziertes_element1", _level1.mc1);
  3. _root.element0.element1.removeMovieClip();
zungenbrecher ist offline   Mit Zitat antworten
Alt 17-08-2004, 12:45   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
_root.element0.element1.duplicateMovieclip("dupliz iertes_element1", _level1.mc1);
Wieso auf Level 1?
  Mit Zitat antworten
Alt 17-08-2004, 22:52   #7 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
oh mann,
ich kann nicht nachvollziehen, warum das so schwer zu verstehen ist. weil halt z.b. auf _level1 oder _level0 oder _level101 irgendein mc in irgendeinem mc liegt und ein anderer mc dorthin dupliziert werden soll.
vielleicht will ich ja das duplikat von meinem dokument nicht in der gleichen schublade haben, sondern im nachbarzimmer im regalfach x.
naja, muss mich wohl noch mal in nem anderen forum umhören.

Geändert von zungenbrecher (18-08-2004 um 10:33 Uhr)
zungenbrecher ist offline   Mit Zitat antworten
Alt 18-08-2004, 11:40   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ganz ruhig, mein Freund Du hast das Prinzip nur noch nicht richtig verstanden... Tiefenebenen 1 und 2 liegen auch im "Regalfach" nebeneinander ähnlich wie Level 0 und Level 1. Das bedeutet, dass du den Level 1 überhaupt nicht benötigst. Ich habe in meiner ersten Lernphase mit Flash den selben Fehler gemacht und bei größeren Projekten schnell die Übersicht verloren.

Die Verschachtelung der MCs auf Level 0 reicht aus, um fast alles darzustellen und auf verschiedene Ebenen auszulagern. Mehrere Levels bringen zusätzlich das Problem, dass die Level auch nur übereinander liegen können und die eingebetteten MCs nicht mehr über die Tiefenebenen zueinander gesetzt oder verschoben werden können. Konkret: wenn ein MC in Tiefe 10 auf Level 0 sitzt, und ein anderer MC in Tiefe 1 auf Level 1, ist Level 1 immer oben. Der MC in Level 1 wird auch nie "tiefer" als der in Level 0 gesetzt werden können.

Aber: ich gebe zu, ich habe dein eigentliches Problem noch nicht richtig nachvollziehen können. Du willst MCs duplizieren und in verschiedene Verschachtelungsebenen setzen, oder? Verschachteln geht natürlich aber nur dann, wenn du leere MC-Hülsen erzeugst, in die du dann weitere MCs einbetten kannst.
  Mit Zitat antworten
Alt 18-08-2004, 14:35   #9 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
also, ich habe jetzt noch mal bei flashhilfe und ultrashock.com gesucht. dort gibt es auch ein paar jungs, die das gleiche wollen, also scheint mein bedürfnis nicht so abwegig zu sein. das problem ist einfach nur, dass duplicatMovieClip() von sich aus keine pfadangabe zulässt, sondern nur eine numerische tiefenangabe.
das ist der stand der dinge, klar.
prinzipiell könnte aber die methode auch so funktionieren, dass ich an einen beliebigen ort kopiere, dazu müsste man aber die methode komplett auseinandernehmen, tiefe durch pfad ersetzen und die neue methode per movieclip.prototype in movieclip integrieren. und genau das möchte ich wissen: gibt es da einen weg?
danke
zungenbrecher ist offline   Mit Zitat antworten
Alt 18-08-2004, 15:50   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Im Prinzip schon

Du müsstest halt wissen, von welchem Symbol ein MovieClip abgeleitet ist.
Dann kannst du attachMovie benutzen und alle Eigenschaften des alten Clips auf den neuen Clip übertragen.

Bisher habe ich das allerdings noch nicht vermisst. Was genau ist das Problem, das du damit lösen möchtest?

mfg. r
bokel ist offline   Mit Zitat antworten
Alt 18-08-2004, 15:52   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Aah, jetzt kommen wir der Sache näher, das Prob ist der duplicateMovieClip. Warum nimmst du dann nicht alternativ den attachMovie? Der MC muss ja bei beiden Befehlen in der Bibliothek liegen, bei attachMovie kannst du aber eine Tiefe und einen Pfad mit angeben.
ActionScript:
  1. meinObjektpfad.meinMC1.attachMovie(meinBezeichner,meineInstanz,Tiefe,{Objekteigenschaften});
  Mit Zitat antworten
Alt 18-08-2004, 20:37   #12 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
wenn ich per createemptymovieclip() einen movieclip erzeuge ist er aber nicht in der bibliothek, soweit ich weiß. er hat auch keine id, die ich über as ansprechen könnte. bei duplicatemoviclip() muss der mc meines wissens auch nicht in der bibliothek liegen, ich kann ihn ja ansprechen, wenn ich einen instanznamen habe.
bei ultrshock.com gibt ee 2-3 weitere fälle, die mit einer erweiterung von duplicatemovieclip() gelöst werden könnten. ich kann sie noch mal raussuchen.
mein problem ist ja gerade (das habe ich zu anfang schon versucht zu erklären), dass ich mc dynamisch erstelle, dann darin textfelder erzeuge, swfs oder jpgs reinlade, bevor andere ebenen und mcs da sind, die aber später dazu kommen. ich kann die reihenfolge aber nicht verändern weil dann die kompatibilität zu anderen projekten verloren ginge. ich bräuchte also nur für diesen speziellen fall eine erweiterung meiner klassen und methoden um diese besondere form von duplicateMovieClip, damit bestimmte mcs an einen anderen ort bekomme.
zungenbrecher ist offline   Mit Zitat antworten
Alt 18-08-2004, 21:34   #13 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ok, wenn du die Clips erst zur Laufzeit erzeugst, dann fällt attachMovie natürlich aus. Stattdessen musst du dann halt den gleichen Clip an der gewünschten anderen Stelle nochmal erzeugen. Wenn es einmal geklappt hat, ist es ja kein Problem, es nochmal zu tun

mfg .r
bokel ist offline   Mit Zitat antworten
Alt 19-08-2004, 09:21   #14 (permalink)
loveandhateflash
 
Registriert seit: Oct 2001
Ort: ffm
Beiträge: 207
das ginge vielleicht, ist aber nicht das gleiche, weil ich dann den gesamten ablauf noch mal durchziehen muss, das array meiner elemente wird dann um die neu erzeugten und geladenen erweitert, die alten bleiben erstmal bestehen. dann muss ich alles was doppelt ist wieder um die hälfte reduzieren und auch wissen, welche die richtigen, und welche die alten sind. mit einer besseren duplicateMovieClip-methode wäre das einfacher.

ein weiteres problem scheint aber auch zu sein, dass duplicatemoviclip() den hinzugeladenen inhalt des mc nicht mit kopiert. wo jetzt genau die grenze liegt, habe ich noch nicht ausprobiert. ob also noch nicht einmal ineinander verschachtelte mc komplett dupliziert werden, oder schon, aber z.b. hinzugeladene jpgs aus externen quellen nicht.

Geändert von zungenbrecher (19-08-2004 um 09:51 Uhr)
zungenbrecher ist offline   Mit Zitat antworten
Alt 19-08-2004, 09:54   #15 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja, aber die gibt es leider nicht.

Wenn du mit Klassen arbeitest, dann kannst du den Clips, die dafür in Frage kommen, deine eigene duplicateMovieClip Methode verpassen, die genau das macht, was ich oben beschrieben habe. Wenn es wirklich nötig ist, kannst du auch den Ablauf der Erzeugung einfach irgendwo abspeichern und bei duplicateMovie nochmal ausführen. Dann bist du doch eigentlich schon da.

mfg. r
bokel 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 04:36 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele