| |||||||
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) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
| zwei probleme: useHandCUrsor verschachtelt und Mouseevents die nicht gehen
ich habe gerade zwei probleme, die mich vor ein rätsel stellen: 1. vererbt sich useHandCursor auch auf alle mcs, die innerhalb des mcs liegen, auf den useHandCursor angewendet wird, und kann man widersprechenden useHandCursor-befehle trotzdem auf verschachtelte mcs anwenden? 2. bisher konnte ich immer buttons in mcs packen, sowohl buttonevents, als auch mc events haben funktioniert. nun habe ich den fall, dass ich einen mc per duplicateMovieClip vervielfältigt habe. in den neuen mcs funktionieren die button-events nicht, obwohl die doch mit übergeben werden müssten, oder? auch mit einem array habe ich es mal probiert, dass ich den pfad aller neuen mcs extern über eine funktion erreiche, das hat aber dazu geführt, dass komischerweise die funktion gar nicht, oder bei jeder mouseaktion, egal auf welchem mc ausgeführt die funktion ausgelöst hat. ich komme nicht dahinter! wie würdet ihr vorgehen? |
| | |
| | #2 (permalink) |
| Gast
Beiträge: n/a
|
Beide Probleme haben etwas mit dem Eventverhalten von Flash zu tun: Wenn du ein klickbares Objekt in ein anderes packst und beide Objekte einzeln Events auslösen sollen, hast du ein Problem. Das Containerobjekt fängt nämlich bei einem Event alle weiteren Events (auch für das eingebettete Objekt) ab. Das macht manchmal auch Sinn, weil sonst bei verschachtelten Objekten ein onRollOver/onRollOut gar nicht funktionieren könnte (wenn das innere Objekt berührt wird, ist das dann ein RollOut für das äussere Objekt? etc) Deswegen würde ich in solchen Fällen ein zusätzliches Objekt, z.B. einen unsichtbaren Button über das Containerobjekt legen, das die Events für das eingebettete Objekt schaltet (auch die useHandCursors). Das unsichtbare Objekt wird nur visible/enabled geschaltet, wenn ein hittest auf das eingebettete Objekt erfolgreich ist o.ä. |
|
| | #3 (permalink) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
|
danke für die erste antwort, viel weiter bin ich noch nicht gekommen. komisch ist, dass onCLipEvent (enterFrame) { this.hittest ... } auch bei den verschachtelten und duplizierten mcs funktioniert, aber mc.onRelease = function () { ...} nicht ich habe es schon auf 100 verschiedene arten probiert, ich verstehe aber nicht, warum der hittest mouse und dupliziertes mc funktioniert, andere button oder mc-events aber nicht. ich habe die funktion auch shcon den mcs beim duplizieren über ein initObject mitgegeben, dann habe ich es mit attachmovie probiert, es geht alles nicht, auch der attachte mc mit dem initObject ist zwar sichtbar, die funktion mitübergeben, aber es passiert nix, wie kann das sein? bei anderen verschachtelten mcs auf meiner bühne, die nicht per duplicateMovie dupliziert wurden geht es doch auch. ich blick es nicht. |
| | |
| | #4 (permalink) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
|
ok, jetzt habe ich bei colin moock gelesen, dass bei duplicateMovieClip() die Event-Handler-Eigenschaften nicht mit kopiert werden, sie gehen verloren. die onClipEvent-Handler aber sehrwohl übergeben werden. wenn ich aber was per initObject beim duplizieren dranhänge, muss es doch gehen, oder? es kann doch nicht sein, dass ein duplizierter mc gar nicht mehr als button funktinieren kann! das muss doch irgendwie über 'ne funktion zu lösen sein !!!
|
| | |
| | #5 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Sowas kannst zum Beispiel machen: ActionScript:
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #7 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Ja, die sind natürlich egal, die hatte ich halt bloß drin...
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #8 (permalink) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
|
also ich habe das jetzt auch noch mal ausprobiert, geht genau so wenig, wie alles andere, was nicht onClipEvent ist. es funktioniert weder mit dem ursprungsmc, noch mit den duplizierten. ich möchte aus performancegründen gerne auf onClipEvent (enterFrame) verzichten, aber das einzige, was mir bisher eingefallen ist, ist eine Kombination aus onClipEvent (enterFrame) {hittest} und onClipEvent (mouseUp), aber das kann doch nicht die einzige lösung sein! bitte hilfe |
| | |
| | #9 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Was geht schon mit dem Ursprungs-MC nicht? Die Button-Funktionalität oder was? Dann machst aber irgendwas falsch... Kannst mal was von deinem Skript hier offenbaren?
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #10 (permalink) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
|
in einem mc liegen zwei weitere mcs, der eine führt nur das duplizieren aus, bestimmt die position, vergibt die richtigen namen, hängt die variablen an, etc. der andere mc enthält einen punkt und ein textfeld, funktioniert wunderbar. beide mc liegen wie gesagt in einem mc, dem auch mouseevents zugeordnet sind, der übergeordnete mc kann per mouseclick skaliert werden, damit werden dann richtigerweise alle enthaltenen mcs proportional mitskaliert. die mouseevents im übergeordneten mc gehen aber nicht, während die onCLipEvent handler sehr wohl funktionieren. onClipEvent (load) { _parent.movStadt.onRelease = function() { trace("gedrückt"); }; //_parent.movStadt._visible = false; //_global.punkte = new Array (); var i = 0; while (i < _root.ortsanzahl) { _parent.movStadt.duplicateMovieClip ("movStadt" + i, i, {onRelease:_parent.movStadt.onRelease}); _parent["movStadt" + i]._y = (_root.Normierung(arrStadt[i].latitude, "y" )-3) _parent["movStadt" + i]._x = (_root.Normierung(arrStadt[i].longitude, "x" )-11) _parent["movStadt" + i].name = arrStadt[i].name; _parent["movStadt" + i].titeltext = arrStadt[i].titeltext; _parent["movStadt" + i].infotext = arrStadt[i].infotext; //_parent["movStadt" + i].druck(); //_parent["movStadt" + i].mouseover.druck (this); //_global.punkte.push(this["movStadt" + i]); i++; } } |
| | |
| | #12 (permalink) |
| loveandhateflash Registriert seit: Oct 2001 Ort: ffm
Beiträge: 207
|
ok, es scheint deshalb nicht zu funktionieren, weil der mc mit der buttonfunktion in einem anderen liegt, weise ich dem ursprungsmc riekt die funktion on (release) { trace ("punkt"); } zu geht es nämlich nicht mal über den ursprungsmc. kopiere ich den aber auf _root und probiere es dann, geht es einwandfrei. ist es also doch so, dass on (release) { trace ("punkt"); } oder mc.onRelease = funktion () { trace ("punkt"); } nicht in verschachtelten mcs funktionieren, oder was ist das problem? ich glaube holgers lösung ist doch die beste, ich muss irgendwie aus der verschachtelung rauskommen. nerv!! Geändert von zungenbrecher (24-02-2004 um 14:47 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |