Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2004, 11:20   #1 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
SwapDepths dupliziert meine MCs???

Liebe Flasher,

anbei mein Mini-Legespiel.
Funktioniert soweit ganz okeeeee.
Es werden 3 MCs verschoben und die Position geprüft. Falls ein Ziel schon belegt ist, wird der MC [die Köpfe] wieder nach oben geschickt.
Die Köpfe bestehen aus einer Grafik und darin einem Button, da ich nur den Bereich des Buttons als Dragger verwenden möchte.

So, wenn ich nun SwapDepths aktiviere [liegt als AS auf den Buttons innerhalb der Köpfe-MCs], dann gibt's CHAOSSSS.
Die Köpfe werden dupliziert und nicht mehr verschoben...

Irgendwas mit dem SwapDepths habe ich wohl nicht kapiert...

Verschwendet Eure Zeit nicht mit dem Rest des Skripts - da gibt's sicher auch viel zu verbessern.
Nur das Setzen der MCs in den Vordergrund bei Berührung ist mit wichtig.

DANKE für Eure Zeit...
Angehängte Dateien
Dateityp: zip koepfe-01.zip (34,4 KB, 3x aufgerufen)
Dateityp: zip koepfe-02-chaozzz.zip (33,2 KB, 3x aufgerufen)
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 22-09-2004, 12:29   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Also, ich halte deine ganze Vorgehensweise für riskant. Ich würde auf keinen Fall Buttons und MCs mixen, da bekommst du immer Probleme mit den Events. Weiterhin solltest du mit einem echten Drag- und Drop arbeiten und dann kannst du auch statt mit hittest mit dem dropTarget arbeiten. Beispiel:
ActionScript:
  1. this.meineMCInstanz.onPress = function(){//Drag des MCs starten
  2.    this.startDrag();
  3. }
  4. this.meineMCInstanz.onRelease = function(){//Drag beenden und Ziel-MC ermitteln
  5.    this.stopDrag();
  6.    trace("Ziel = "+this._dropTarget);
  7. }

BTW: einen swapDepths habe ich in den Scripten gar nicht gefunden...
  Mit Zitat antworten
Alt 22-09-2004, 13:15   #3 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
Lieber HW,
OK, ich werde die Buttons kicken.
Dann liegen die Köpfe als reine MCs auf der Szene.

Äh, dein Drag-Skript dann auf die MCs:
- Mit OnClipEvent (enterFrame)???
- Wenn nun mein MC "obj01" heisst, dann ist das:
Code:
this.obj01.onPress = function(){
...//Drag des MCs starten
Aber "this" ist doch schon der MC?

Bitte nochmal kurz Hilfe...
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 22-09-2004, 13:24   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Äh, dein Drag-Skript dann auf die MCs:
Nein, in den ersten Schlüsselframe in eine eigene Ebene.

Zitat:
Aber "this" ist doch schon der MC?
In diesem Fall ist "this" die Hauptzeitleiste.

Zitat:
this.obj01.onPress = function(){
Wenn der MC den Instanznamen obj01 bekommt, stimmt das so...
  Mit Zitat antworten
Alt 22-09-2004, 13:48   #5 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
- Buttons sind weg!
- Drag ist mittels "agedoubleju"-Style realisiert.

hm... trotzdem dupliziert sich der MC beim ersten Ziehen???

In das AS im Bild 1 habe ich ein swapDepths eingefügt, was auch klappt.

Wo kommt der vierte Kopf her???
Angehängte Dateien
Dateityp: zip koepfe-03-chaozzz.zip (32,9 KB, 3x aufgerufen)
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 22-09-2004, 14:15   #6 (permalink)
alien
 
Benutzerbild von Smirgel
 
Registriert seit: May 2002
Ort: Colonia
Beiträge: 7.597
hmmm, keine ahnung warum und wieso.
lässt man swapDepths weg gehts, stimmt schon.
aber es geht auch wenn du ein stop() ins erste frame schreibst.

also denke ich liegts irgendwie in der verbindung swapDepths und der frameschleife.

grüße.
smirgel.
__________________
bei fragen, fragen.
Smirgel ist offline   Mit Zitat antworten
Alt 22-09-2004, 14:22   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2002
Beiträge: 302
um nochmal auf das Swapdepth-Problem zurück zu kommen.
ich hatte das letzte woche genauso, das er meinen Movie plötzlich dubliziert hat!?
verstehe nicht warum und ich muss sagen das ich mich leider auch nicht weiter damit befasst habe, aus zeittechnsichen gründen ....

hat denn vielleicht einer Erfahrung mit dem SwapDepth problem? würde mich freuen wenn das hier nochmal geposted wird!

dankeschööön
fany ist offline   Mit Zitat antworten
Alt 22-09-2004, 22:37   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
@digital-patrick: da fehlt ein simpler stop() im ersten Frame, dann dupliziert er auch nicht mehr...

@fany: wenn du mit swapDepths ein Objekt an eine Tiefe verschiebst, die schon mit einem anderen Objekt belegt ist, kann es sein, dass ein Duplikat angelegt wird.
  Mit Zitat antworten
Alt 23-09-2004, 08:55   #9 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
Hi HW,
stimmt mit dem stop(), aber dann klappt das mit meiner "Prüfung der Teilnehmer" in Frame 2 natürlich auch nicht mehr.
Wenn Drag & Prüfung auf einem Frame liegen, wird nichts geprüft.

Naja, ich schreibe es grad um und poste dann, wenn ich es geschafft habe.
Evtl. ist HWs Notiz 2 [2 MCs mit identischer Tiefe] die Lösung...

Danke
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 23-09-2004, 16:05   #10 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
Mist, geht nicht. Muss schnell meinen Frust los werden.
Jetzt habe ich alles neu gemacht, aber im Prinzip hat sich an dem urspünglichen Problem noch immer nichts verändert. Der zuerst angeklickte fu**ing MC wird dupliziert... hm...
Hey, dabei ist das Problem doch supi-simpel oder?

Gruß
digital-patrick [relativ verzweifelt]
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 23-09-2004, 19:04   #11 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
Also, eine neue Version ist fertig [FLA s.u.] und klappt auch FAST...
Ich habe die Erkenntnisse aus diesem Thread so gut es ging verarbeitet.

Folgendes Problem bleibt:

ES SOLL 100% SICHER SEIN, DASS AUF EINEM ZIEL [= Körper] *KEIN* ZWEITER KOPF LANDEN KANN! Klappt aber nicht. Mit Kopf 1 geht es immer korrekt. 2 und 3 mogeln sich manchmal dazwischen...

Technik:
Der MC "pvd" [das Gesicht links oben] prüft ständig bei "enterFrame" die Lage aller drei Objekte [= Köpfe] und aktualisiert die Werte ziel01_status, ziel02_status, ziel03_status unterhalb der Körper.

Im ersten Frame ist ein AS, das [gem. HW] das Dragging macht und beim Loslassen prüft, ob ein Ziel schon belegt ist - ausser mit dem Objekt, das gerade ankommt.

Klar?

Hat jemand Zeit für eine Idee???

Danke
Patrick
Angehängte Dateien
Dateityp: zip koepfe-05.zip (34,2 KB, 4x aufgerufen)
__________________
[less is more]
digital-patrick ist offline   Mit Zitat antworten
Alt 23-09-2004, 23:29   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Normalerweise benötigst du dafür keinen enterFrame, sondern nur einen kurzen Check nach dem stopDrag, ob das droptarget ein anderer MC oder ein Zielfeld ist (bzw. werte die hittest-Rückgabe aus). Wenn es ein anderer MC ist, setz einfach den gedraggten MC an seine Startkoordinaten zurück. Die _x- und _y-Position des MCs solltest du dir dazu natürlich in einer Variable merken.
  Mit Zitat antworten
Alt 24-09-2004, 08:23   #13 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
Hi Holger,
OK, prima Idee: Ich frage einfach ab, ob mein MC mit droptarget auf einem anderen Objekt [obj01 bis obj03] liegt:
ActionScript:
  1. this.obj01.onRelease = function() {
  2.     this.stopDrag();
  3. // berührt mein Objekt etwa das 2. oder 3. Objekt???
  4.     if (obj01.hitTest(_root.obj02) || obj01.hitTest(_root.obj03)) {
  5. // gibt Fehler-Sound aus und setze das Ding wieder nach oben [50/50]
  6.             _root.sound_fehler.start(0, 1);
  7.             obj01._x = 50;
  8.             obj01._y = 50;
  9. // liegt das Objekt jetzt auf einem Ziel? [ziel01 bis ziel03]
  10.     } else if (obj01._droptarget.substring(0,5) == "/ziel") {
  11.             trace (obj01._droptarget);
  12.             trace (obj01._droptarget);
  13. // dann setze mein Objekt auf die Koordianten von
  14. // diesem Ziel [mit droptarget ermittelt]
  15. // HIER IST WOHL DER FEHLER - kann man das so machen???
  16.             obj01._x = obj01._droptarget._x - _root.x_offset;
  17.             obj01._y = obj01._droptarget._y - _root.y_offset;
  18.     }
  19. };
Viel kürzer und schöner, aber das mit den Koordinaten von droptarget geht nicht...
__________________
[less is more]

Geändert von digital-patrick (24-09-2004 um 08:38 Uhr)
digital-patrick ist offline   Mit Zitat antworten
Alt 24-09-2004, 08:53   #14 (permalink)
hm...
 
Benutzerbild von digital-patrick
 
Registriert seit: Jul 2002
Ort: Nürnberg
Beiträge: 39
F E R T I G ! ! !

So, ENDE!
Das Ding ist FERTIG...
Es kann jetzt alles so, wie ich's wollte:
- Beliebige Kombinationen können gewählt werden und es wird ein Wertungsstring erzeugt
- Keine 2 Objekte auf einem Ziel

FLA liegt an...

Gruß, schönen Tag
und vielen Dank an alle und das Flashforum
Patrick


PS: Den Fehler oben habe ich einfach mit getProperty gelöst - nicht sehr cool, aber es klappt...
Angehängte Dateien
Dateityp: zip koepfe-06.zip (33,7 KB, 7x aufgerufen)
__________________
[less is more]
digital-patrick 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 08:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele