| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
| hittest formkennzeichen?
Hallo! Ich hab zwar massig Beiträge gefunden, aber in jedem zitiert irgendwer als Antwort die Flash-Hilfe für hittest und dann scheint es offenbar zu funktionieren. Ich raff leider in der Hilfe aber gar nichts ![]() Ich will meinen Blubberblasen Dinge in den Weg stellen, die sie erkennen und umgehen sollen. Dazu dieses einfache Script (Erst mal ohne Formkennzeichen): PHP-Code: Jetzt hab ich's mal mit Formmarken probiert. Und zwar so wie's in der Hilfe steht: PHP-Code: PHP-Code: Und noch ein paar ganz phantasievolle Varianten. Klappt alles nicht. Einmal ist immerhin der Rechner dabei abgestürzt. Was mach ich falsch? Ich versteh auch überhaupt nicht, warum man, wenn man Formkennzeichen einsetzen will, nicht einfach die Instanz des MCs benutzen kann und statt dessen seine Koordinaten angeben muss? Irgendjemand hier, der mal ganz idiotensicher erklären kann, was Flash da in etwa tut, wenn man Formkennzeichen benutzt?
__________________ we will stop enhancing the truth in 3, 2, ... Geändert von SpecOps-12 (15-12-2004 um 10:18 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
die animation sieht doch garnich so schlecht aus-warum diese aufmunterung weil du sooo einfach nicht ans ziel kommst. außer tweens brauchst du hier weit mehr aufwand als du dir vorstellst. mit tweens funktioniert die sache nicht du mußt die blasen per AS(Actionscript) bewegen und damit auch die bevorstehende kollision verhindern. erstmal definitiv hitTest _________ 1. einObjekt.hitTest(zweitesObjekt) //2 Flächen auf Überschneidung testen 2. einObjekt.hitTest(x,y,true(od false)) //ein Punkt(x,y) mit einer Fläche testen. true um exakte form zu testen, false wenn rechteck umbeschrieben werden soll die 1. methode zieht um ein beliebiges objekt ein rechteck/quadrat, die fläche wird also umschrieben und testet diese fläche mit der anderen umschriebenen fläche. testest du also ein rechtwinkliges dreieck so denk dir die andere hälfte daran-dieses objekt wird intern zum testen verwendet. Für genaue Vergleiche also nicht zu gebrauchen (es gibt viele möglichkeiten, die aber etwas kompliziert sind um diesen sachverhalt zu umgehen) die zweite möglichkeit kann diesen sachverhalt ausbügeln, aber du kannst damit auch nur eine einzige koordinate testen(zB mauszeiger) oder ganz kleine partikel. bei dir müsste man wie gesagt die blasen animieren, da sie zu groß sind wären sie wie "quadrate", das dreieck wäre auch ein "quadrat" bzw eher "rechteck". sehr ungenau und die momentane animation erspart dir viel arbeit und sieht ganz gut aus deluxe |
| | |
| | #3 (permalink) | |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Hi, danke für die Antwort. Zitat:
Wenn ich den benutz, ignorieren die Blasen das Hindernis vollständig. Hier nochmal das Beispiel mit Formkennzeichen. Die Blubberblasen sind übrigens vollständig über AS gesteuert. Da bin ich auch sehr stolz drauf ![]() Ich wollt das ganze Script nicht posten, weil's mir für meine Frage nicht wichtig erschien. Ich weiß auch, dass der "Ausweichalgorhythmus" noch sehr plump ist, aber zum probieren würde es ja schon mal langen. Ich steh nicht unter Zeitdruck, deshalb kann ich ruhig etwas grübeln auf meinem Weg zum perfekten Aquarium ![]() Hier das gesamte Script für eine einzelne Blase: PHP-Code: Wie muss der eigentlich aussehen? Ich hab eine einfache Form innerhalb eines MCs. Ich mein, wenn es so funktionieren würde wie in diesem Flash-Hilfe-Beispiel mit dem Auto bei "Kollision", wär ich ja schon glücklich.
__________________ we will stop enhancing the truth in 3, 2, ... Geändert von SpecOps-12 (15-12-2004 um 12:51 Uhr) | |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
ich denke mal das ding soll nicht hochgenau und physikalisch agieren. würde sagen du machst das wie folgt du nimmst diesen hitTest mcA.hitTest(mcb) //mcA=blase mcB=dreieck wenn ne blase nun das dreieck hitted dann setzt du die blase per AS an eine von beiden ecken und laßt sie dort weiter sinuskurven beschreiben. bei vielen blasen merkt das keiner und du ersparst dir viel arbeit. deine idee is nich schlecht aber bei sovielen blasen soviele while schleifen-das mag flash nich. da die blasen nach oben fliegen mußt du garnicht per punkte testen sondern kannst schon o.g. form des hitTest verwenden. bei nem hit mußte dich für ne richtung entscheiden am anfang mal eifnach nur für rechts. machst als hitTest. falls hit rechts verschieben um 2. wieder hitTest wieder verschiebung um 2 bis kein hit mehr kommt. also genau das was du machst. aber mach es nicht per schleife. sondern per interval oder ganz einfach innerhalb deines enterFrame events ne while schleife desshalb auch nicht weil sie innerhalb eines frames komplett durchläuft ein ActionScript:
wenn du dir das auf deine blasen übeträgst dann is blase A vor dem frame unterhalb des dreiecks und nach dem frame viel weiter rechts davon-->unnatürlich viel spaß deluxe deluxe |
| | |
| | #5 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Ich hab's so probiert. das script dazu ist dann PHP-Code: Und - sorry, aber ich bin manchmal etwas langsam - ich versteh immer noch nicht ganz, warum das mit den Formkennzeichen nicht funktioniert.
__________________ we will stop enhancing the truth in 3, 2, ... |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
wegen dem sinusproblem mußte doch nur nen xoffset einführen ActionScript:
und natürlich mußte auch beachten dass bei einem hit die blase nicht weitersteigen darf. ActionScript:
deluxe |
| | |
| | #7 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Sei dir versichert, mein persönlicher Held des Tages zu sein ![]() Hier nochmal zum angucken. Morgen mach ich dann die Feinheiten. Obwohl mich ja doch interessiert hätte, wie das mit den Formkennzeichen wäre ![]() Das Script dazu in seiner ganzen ähh naja Pracht (?) nochmal: PHP-Code:
__________________ we will stop enhancing the truth in 3, 2, ... |
| | |
| | #8 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Falls irgendwann in ferner Zukunft noch mal jemand nach "Formkennzeichen" sucht und hier reinguckt ![]() Habs jetzt. Der Punkt war, dass ich nicht gebacken hatte, dass das Movieclip immer von seinen eigenen Koordinaten und nicht von der objektiven Lage auf der Bühne ausgeht, und die Koordinaten entsprechend korrigiert werden müssen. Also, der entscheidende Punkt war quasi: PHP-Code:
__________________ we will stop enhancing the truth in 3, 2, ... |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |