Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-03-2006, 20:08   #1 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
spezielles hittest problem

Hallo ihr Lieben
ich habe (mal wieder) ein Problem, das zu hoch für mich ist ...
Und zwar ist es diesmal eine Hittest-Situation.
Ich möchte das man einen MC drag´en kann und wenn er über einen bestimmten Bereich losgelassen wird, auf eine bestimmte Position springt.
Also im Klartext, wenn ich den MC in den Rahmen ziehe, soll er in ihm landen wenn ich dadrin die Maus loslasse.
Das Problem ist aber, daß ich mehrere dieser Rahmen habe. Wie mache ich nun die Hittestabfrage? Ich möchte nicht in der Abfrage alle Rahmen abfragen.
Ich wüsste gerne ob es möglich ist, daß der MC selbst guckt über welchen er gerade ist und wenn ich loslasse, er in dieselben x/y Werte springt, wie der Rahmen.
Hoffe ihr versteht wie ich das meine
Wie schaffe ich das?
lg
Loena
loena ist offline   Mit Zitat antworten
Alt 30-03-2006, 21:13   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: BW
Beiträge: 56
Hmmm... du sagst du möchtest nicht jeden Rahmen abfragen.
Aber das ist meiner Meinung nach die einfachste Möglichkeit. Du packst alle Rahmen in ein Array und über das Loopst du mit einer Schleife drüber, wenn der MC gedroppt wird.

quasi:

Array welches alle Rahmen enthält: var rahmenArr

for(var i in rahmenArr)
{
// hitTest auf mit MC und rahmenArr[i];
}
__________________
Def. "Team" - -=Toll Ein Anderer Machts=-
cirox ist offline   Mit Zitat antworten
Alt 30-03-2006, 21:18   #3 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
Ok, wenn es nicht anders geht, dann werde ich das wohl so machen müssen.
Aber wie sieht das Script genau aus? Kenne mich mit Arrays gar nicht aus. Wenn dann nun ein Array positiv ist, wie bekomme ich dann die Koordinaten her?
lg
Loena
loena ist offline   Mit Zitat antworten
Alt 30-03-2006, 21:40   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: BW
Beiträge: 56
Schau mal hier rein, das dürfte genau Dein Thema sein. =)
__________________
Def. "Team" - -=Toll Ein Anderer Machts=-
cirox ist offline   Mit Zitat antworten
Alt 30-03-2006, 21:46   #5 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
Leider kann ich die ZIP nicht öffnen ...
loena ist offline   Mit Zitat antworten
Alt 30-03-2006, 21:53   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: BW
Beiträge: 56
Zitat:
Zitat von loena
Leider kann ich die ZIP nicht öffnen ...

hm.. mist, ich auch nicht...

Könnte jemand so nett sein und probieren die zip aufzukriegen?
__________________
Def. "Team" - -=Toll Ein Anderer Machts=-
cirox ist offline   Mit Zitat antworten
Alt 30-03-2006, 23:33   #7 (permalink)
Digger2k3
Gast
 
Beiträge: n/a
Die Zip könnt ihr vergessen, habe grade alles Probiert, was nur gehen könnte, die ist wirklich im A*** ... einfach ne PM schreiben - dazu hier klicken

Sorry, das ich keine bessere Nachricht hatte.


Gruß

Tino
  Mit Zitat antworten
Alt 31-03-2006, 00:34   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 55
Da ich gerade was ähnliches in Verwendung habe, habe ich dir mal ein Bsp gemacht.
Es muss auch nicht zwingend ein Array verwendet werden, es reicht auch, wenn die Rahmen in einem MC verschachtelt sind.
OK, ein MC ist eigentlich ja auch ein Array, aber daher ist es auch egal, was man da verwendet.
Aber siehe selber...
Angehängte Dateien
Dateityp: zip kollision.zip (5,9 KB, 8x aufgerufen)
webcreate ist offline   Mit Zitat antworten
Alt 31-03-2006, 04:52   #9 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
@webcreate
Vielen Dank für deine Mühen!
Allerdings kann ich mir das noch nicht so ganz anpassen, denn ich vertsehe den Bereich nicht ganz:
PHP-Code:
function checkhit(mc1mc2){
    for(
i in mc2){
        if(
mc2[i].hitTest(mc1._xmc1._y)){
            var 
myPoint:Object = {x:0y:0};
            
mc2[i].localToGlobal(myPoint);
            
mc1._x myPoint.+ (mc2[i]._width/2) - (mc1._width/2);
            
mc1._y myPoint.+ (mc2[i]._height/2) - (mc1._height/2);
        }
    }

Wo kommen aufeinmal mc1 und 2 her?
Kannst du die Zeilen bitte kommentieren?
Wäre sehr nett
lg
Loena
loena ist offline   Mit Zitat antworten
Alt 31-03-2006, 06:21   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Instanzname von berührten MC bekommen
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 31-03-2006, 09:09   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 55
Die werden doch bei dem Functionaufruf mit übergeben:
ActionScript:
  1. // Functionsaufruf mit Übergabe des MCs, das die weiteren beinhaltet
  2. checkhit(this, sammlung);
  3. // Functionaufruf mit Übergabe des Arrays
  4. checkhit(this, pruefinhalt);

In meinem Bsp liegt ja dann hinter this das MC 'obj', da es aus desen onMouseUp function stammt und das zweite MC ist einmal das MC 'sammlung' und einmal das Array 'pruefinhalt'.

Also ist der Functionaufruf wie folgt aufgebaut:
checkhit(mc1, mc2);

Was ggf. etwas verwirrt ist der Einsatz von localToGlobal().
Das ist nötig, da man die Koordinaten bei den verschachtelten MCs als Globalkoordinaten betrachten muss.
webcreate ist offline   Mit Zitat antworten
Alt 31-03-2006, 19:09   #12 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
Hallo zusammen
Actionscript und ich, das ist wie Feuer und Wasser. Ich glaube wir denken in zwei völlig anderen Arten
Ich habe heute den ganzen Tag versucht mir etwas selbst zusammen zu basteln und ich habe für meine Verhältnisse viel geschafft. Für euch ist das sicher ein Pups.
Aber wie gesagt, ich komme nicht weiter.
Situation nochmal zusammen gefasst:
Ein MC wird aus der Bib auf die Bühne attached. Ihn soll man drag´en können und auf ein anderen MC ziehen können. Wenn die übereinander liegen und die Maus losgelassen wird, soll der Drager in eine bestimmte Position springen.
Zwei Haken gibt es aber:
- der Film in dem sich alles abspielt wird später nochmal in einen anderen geladen, daher fällt wohl _root flach.
- der MC der attached und gedraged wird, soll aus einer von mehreren sein, der zufällig in einen Container geladen wird. Wie ich das schaffe habe ich hier von mooseMash erfahren. Das habe ich aber nicht in meinem jetzigen Anhang, da mir das so schon zu kompliziert ist. Auf jeden Fall hat der attached keinen festen Startpunkt (sofern das wichtig ist).
Wie kann ich nun also meinen Anhang so umfummeln das er funktioniert und noch, für einen absoluten Laien wie mich, nachvollziehbar ist?

lg
Loena
Angehängte Dateien
Dateityp: rar Unbenannt-2.rar (4,4 KB, 4x aufgerufen)
loena ist offline   Mit Zitat antworten
Alt 31-03-2006, 20:15   #13 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
servus,

ich hab mal dein script etwas modifiziert, vielleicht ist es ja was du brauchst?!
good luck mM
Angehängte Dateien
Dateityp: zip drag.zip (5,7 KB, 12x aufgerufen)
__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Alt 31-03-2006, 20:39   #14 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
Hallo mM
vielen Dank für deine Mühen, dass sieht doch richtig gut aus und scheint genau so zu sein, wie ich mir das vorstelle
Ich werde mir das aber nochmal in Ruhe anschauen und das in mein Projekt einbinden. Ich werde sicher noch einige Fragen haben
lg
Loena

p.s. Ohne die hilfsbereiten Menschen hier im Forum wäre ich echt verloren!
Darum noch mal ein riesiges Danke schön an alle die mir bisher geholfen haben
loena ist offline   Mit Zitat antworten
Alt 01-04-2006, 11:01   #15 (permalink)
Neuer User
 
Benutzerbild von loena
 
Registriert seit: Mar 2006
Beiträge: 105
Ich wusste das noch ein Problem kommt ...
Hallo
Und zwar versuche ich das Script von mooseMash so zu verändern, dass wenn ich beim dragen die Mouse loslasse und ich nicht über einem der MC´s bin, der gedraggede wieder an den Ursprungspunkt zurück springt.
Aber ich schaffe nur eines von beiden.
Entweder springt er immer zurück, oder gar nicht
Habe das in der if-Schleife mit else versucht, aber wie gesagt, das ging nicht. Mein jetziger grober Stand:

[PHP]
c1x = 533;
c1y = 450;
// Die Funktion von mooseMash
function chkHit(mc){
for(var i=0;i<hit_mcs.length;i++){
if (mc.hitTest(hit_mcs[i])) {
mc._x = hit_mcs[i]._x;
mc._y = hit_mcs[i]._y;
trace(hit_mcs[i]);
break; // Das habe ich hier reingesetzt, in der Hoffnung er würde die Schleife verlassen, sobald Hittest ist ...
} else { // und halt meine Alternative falls es nicht ist
c1._x=c1x;
c1._y=c1y;
}
}
}[/PHP
Wo ist das Problem?
Da ich mehrere Container habe (c1-4) habe ich versucht das mit [i] in meine else-Schleife zu packen, aber ich bekam immer Synatxfehler
Weis da jemand weiter?
lg
Loena
loena 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:01 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele