| |||||||
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) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Klasse mit Hittest: manchmal reagieren die falschen MovieClips *ich muss weinen*
Liebes Forum. Was ist nur los mit Flash? Ich habe doch ein einfaches Skript und es geschehen unvorhersehbare Dinge. Der reihe nach: Bei einem Schießbuden-Spiel gibt es viele Preise-MCs. Darin befindet sich je ein Röhrchen-MC und ein Blume-MC (s. Anlage). roehrchen und blume haben folgende Klassenskripte: Roehrchen: PHP-Code: PHP-Code: Ich habe Euch das Symbol des Preises beigelegt (wundert Euch nicht, es ist keine Blume sondern ein Marienkäfer). Ich habe schon folgendes probiert: 1. Ich habe dem Preis zwei Eigenschaften gegeben: Blume_intakt und Roehrchen_intakt. Diese Eigenschaften habe ich bei entsprechendem Treffer false gesetzt. Nix geändert. 2. Ich habe eine Liste angelegt mit allen Preisen, garantiert eindeutigen Namen und den beiden Stati. 3. Ich habe zusätzlich ein Bild angelegt, das den abgeschossenen Zustand beinhaltet -- ohne wenn und aber und das Bild "ende" genannt. Ich habe angegeben, dass onEnterFrame bei !Blume_intakt und !Roehrchen_intakt immer zu "ende" gesprungen werden soll. Nichts nichts nichts ändert etwas am Problem. Denn trotz letztem vermeintlich sicheren Vorgehen springt irgendwann ein MC auf das Bild "Preis und Roehrchen zerstört (prz)". Würde die globale Liste oder die Eigenschaft so sein wie ich sie gesetzt habe, müsste IMMER das Bild "ende" erscheinen. Also: Der Status resp. die Liste wird irgendwo geändert. Dagegen spricht, dass dieser Status nur bei "onLoad" auf true gesetzt wird. onLoad aber (durch Trace ausprobiert) nur zu Beginn einmal aufgerufen wird. Ich weiß nicht weiter HILFE!!!
|
| | |
| | #3 (permalink) |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 968
|
kleiner Tipp - installier mal den debugPlayer und schau dir mal die redrawRegions an wenn du mit createEmptyMovieClip MovieClips generierts und da mit code nicht sofort reinzeichnest dann sind die meistenst einfach standartmäßig genauso groß wie die Bühne Geändert von Sir Freako (24-03-2009 um 10:46 Uhr) |
| | |
| | #4 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Fehler immer noch unklar, aber Problem gelöst
Hallo, vielen Dank. Ich habe dann gestern Abend nocht weiter gebastelt und springe nun bei erfolgtem Abschuss direkt in das Bild "ende". Dort befindet sich nichts mehr außer ein bisschen Grafik -- nicht einmal als Symbol. Da scheint Flash zumindest zu verbleiben und springt nicht mehr einfach in ein anderes Bild. gaspode: Danke, leider kann ich die FLA nicht posten, da das Projekt eine Auftragsarbeit ist. Sonst hätte ich es gerne gemacht, da das Phänomen so bescheuert ist, dass ich es gerne geteilt hätte :-). Ich gehe von einen Bug aus... Ich habe keinen Konstruktor, weil ich unter der Flash-GUI arbeite und dort habe ich die Klasse direkt dem Darsteller in der Bibliothek zugeordnet. Das Konstrukten macht Flash dann vermutlich alleine. Sir Freako: Danke für den Hinweis :-) Viele Grüße Seebold |
| | |
| | #5 (permalink) |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 968
|
also wie ich finde majorpfusch also nicht minor sondern major wenn du den ersteller dierekt in der Bibliothek zuordnest via linkage Indetifier dann ist das umso schlimmer das du keinen Konstruktor hast weil Code: class myMovieClip extends MovieClip{
public function myMovieClip(){
}
} Geändert von Sir Freako (24-03-2009 um 12:20 Uhr) |
| | |
| | #6 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Nein nein nein da hast Du was falsch verstanden
Hallo, ich schreibe hier nichts in die Timeline. Man kann in der Bibliothek die Darsteller mit einer Klasse verknüpfen. Verwende ich das Symbol/MovieClip auf der Bibliothek, greift es automatisch auf die Klassendatei zu. Diese ist ein externes Skript, dass wie die Klasse heißt, z.B. cl_blume.as (hierfür benutze ich auch den FlashDeveloper und nicht Flash). Ich finde, das ist eine sehr saubere Lösung. Alle Skripte liegen extern als Klassen-Skripte vor. In der Timeline und auf den MCs befindet sich keine Skripte (in der Regel). |
| | |
| | #7 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Ich will lernen, Sir Freako
Nun, so wie ich es mache, funktionierts. Aber gerne lerne ich dazu. An welcher Stelle müsste ich den einen Konstruktor einbauen und wie sieht der dann aus? Ich habe mit mit Konstruktoren kaum befasst, weil ich bisher dachte, dass auf dem Weg, wie ich ihn gehe, das Objekt ohnehin erzeugt wird; spricht, der Konstruktor vorhanden ist.
|
| | |
| | #8 (permalink) |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 968
|
Ja aber leider falsch gedacht weil wenn du extends schreibst dann überschreibst du sozusagen die MovieClip standart klasse wenn dann der Konstruktor fehlt dann kanns auch nicht gescheit klappen . Naja so wie ich das da oben halt auch gemacht habe und vorallem alle variablen die vorahnden sein sollen mußt du auch deklarieren leichter tust du dich wenn du ein Object auf deinen MovieClip patchst und eben nicht extendest - nur so zur info |
| | |
| | #9 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Hm, das ist ja spannend
Habe jetzt mal bei der Blume PHP-Code: Am Anfang gibt es allerhand Ausgabe á la "konstrukte"; das ist ja auch richtig. Nur kommt im Laufe des Spiels, in dem keine MCs neu geladen werden, die Ausgabe "konstrukte". Hin und wieder. In 2 Minuten drei Mal. Das würde zeigen, warum sich die Eigenschaften (beginn dieses Threads) wieder zurückgestellt haben. Aber was kann es sein, dass die MCs quasi neu erstellt werden? Erklärt aber noch nicht, warum nicht das MC unter dem Hittest reagiert, die die MCs sind händisch plaziert und nicht über "createEmptyMovieClip()". Dies ist nur eine interessante Beobachtung- Mein Spiel funzt soweit. Sir Freako: Werde die Konstruktoren in meinen Klassen nachtragen. Damits hübsch ist und nicht majorpfusch :-) Danke Könnte ich im Konstruktor auch die Dinge unterbringen, die ich bei onLoad einstelle? |
| | |
| | #10 (permalink) | |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 968
| Zitat:
Code: class myBlume extends MovieClip {
public function myBlume() {
this.onLoad = function() {
trace("Blume Load ");
}
this.onEnterFrame = function(){
}
}
}
} Code: class myBlume extends MovieClip {
public function myBlume() {
}
private function onLoad(){
}
private function onEnterFrame(){
}
} Geändert von Sir Freako (24-03-2009 um 14:58 Uhr) | |
| | |
| | #15 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Wenn kein Konstruktor definiert ist, wird implizit ein default Konstruktor erzeugt.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| hittest, klasse, unerklärliches verhalten |
| Themen-Optionen | |
| Ansicht | |
| |