| |||||||
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) |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
|
Hallo, Folgendes Problem: Ich habe einen Container der draggable ist, in dem aber noch Submovies liegen die ebenfalls MouseEvents ausführen sollen. Mein Lösungsansatz ist ein MouseListener mit dem ich das draggen löse. Die Submovies können dann Events auf sich selbst haben die noch funktionieren, da auf dem _parent MovieClip kein Event liegt. Problem ist nun, das die Events auf den Submovies nur dann ausgelöst werden sollen, wenn man ohne zu ziehen geklickt hat. Das löse ich indem ich onMouseMove im MouseListener die Submovies auf enabled = false; setze. Leider scheint das gelingen dieser Aktion aber davon abzuhängen wie schnell man die Maus danach bewegt. Zieht man nur langsam bleibt das Event auf dem Submovie erhalten, zieht man schnell verschwindet es!? Weiss jemand wieso und wie ich das Problem lösen kann? Mein Lösungsansatz gefällt mir gut, deshalb wenn möglich bitte keine Alternativen bieten, sondern nur die Mausgeschwindigkeitsproblematik behandeln. Alternativen habe ich schon selbst gefunden. Gefallen mir aber alle nicht so besonders ![]() Siehe Test SWF (inkl. fla) dragtest.zip Auf die kleine Box klicken, ziehen und dann loslassen. Je nachdem wie schnell man zieht wird der klick ausgeführt
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi Geändert von dark-future (04-12-2007 um 10:29 Uhr) Grund: .fla hinzugefügt |
| | |
| | #2 (permalink) |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
| ???
Hat wirklich Niemand eine Idee? Sehe ehrlich gesagt keinen Programmierfehler, kann das ein Flashbug sein? Wäre nett eine Antwort zu bekommen, auch wenn das Prob. unlösbar sein sollte!
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
tipp: nicht nochmal posten ;-) wenn die magische 0 bei antworten fehlt, dann glauben alle da wäre schon eine antwort gegeben worden. kapiere nicht so ganz was du machen willst (will mich damit auch nicht ewig beschäftigen). wer soll geklickt und wer bewegt werden? erklär vielleicht nochmal: was dein ziel ist und nicht, was nicht geht. entweder: alle event-mc's auf einer ebene; also im container-mc drinn und das container-mc hat keine funktion. oder alle functionen im container-mc und den rest mit hitTest usw. machen. und irgendwo ein altX=_x um feststellen zu können, ob sich was bewegt hat.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-12-2007 um 12:33 Uhr) |
| | |
| | #4 (permalink) | |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
| Zitat:
Sorry, dachte das wäre verständlich gewesen was ich möchte. Du hast es ja offenbar auch verstanden. In welchem Kontext ich das später verwenden möchte tut ja nichts zur Sache. Könnte ja zB auch nur ein Template sein, ohne konkretes Projekt. Wie auch immer, ich werkle an einer Art Livepaper, ein Heft zum Blättern. Wenn man auf eine Seite klickt wird diese vergrößert und muss daher draggable sein, damit man in alle Ecken sehen kann. Trotzdem sollten darin noch Mousevents verfügbar sein. Und da mir diese Möglichkeit nicht gefällt versuche ich alle event-mc's auf enabled=false zu setzen damit onRelease keine Aktion ausgeführt wird, wenn man zufällig dort geklickt hat. Nur dieses enabled=false ist nicht zuverlässig, da es anscheinend von der Mausgeschwindigkeit abhängt (Gut zu sehen in meinem Beispiel). Aber die event-mc's zu disablen ist die einzige Möglichkeit, das diese nicht ihre Events ausführen. Oder gibt es noch andere Möglichkeiten ein zB onRelease zu deaktivieren ohne eine if-Abfrage darin ala if(_parent.moved == false)? Danke für deine Mühe
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi | |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
nochmal sorry, das ich nicht die zeit habe (haben will) in dein problem tiefer ein zu steigen. generell: wenn ein objekt irgend ein event hat, dann bekommen alle untergeordneten absolut kein event mehr ab (ist in AS3 anders - da gibt es nur Listener - und andere probleme ;-) schon mal daran gedacht nicht deinen container selbst mit events zu belegen, sondern ein rechteck darunter damit zu beglücken, ein objekt unter allen anderen? das bekäme z.b. alle klicks ab, die nicht über im schon abgefangen wurden. "..dieses enabled=false ist nicht zuverlässig.." das glaube ich nicht (um das zu analysieren will ich keine zeit inverstieren). entweder setzt du das zu spät oder es wird was vergessen? "..andere Möglichkeiten ein zB onRelease zu deaktivieren.." du kannst zu jeder zeit eine funktion an und wieder abhängen: tuirgendwas = function(){} _btn.onRelease= tuirgendwas; delete _btn.onRelease;
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-12-2007 um 15:43 Uhr) |
| | |
| | #6 (permalink) | ||||
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
| Zitat:
![]() Aber es könnte ja anderen noch etwas sinnvolles einfallen. Zitat:
Zitat:
Zitat:
PHP-Code: Aber auch wenn es ginge wäre auch das nicht Sinn der Sache, weil ich die Events ja gerne original auf den MC's im Container hätte und nicht irgendwo in Funktionen. Vielleicht weiß ja Jemand über die internen Routinen von Flash bescheid und kann mir sagen wieso in einem onMouseMove das enabled = false unzuverlässig ist und das delete onRelease gar nicht geht. Und nochmal der Hinweis, dass in meinem Beispiel von oben zu sehen ist, wie Merkwürdig sich MC.enabled verhält.
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi | ||||
| | |
| | #7 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Wieso willst du keine Alternativ? Hoffe mal, ich hab's überhaupt verstanden: PHP-Code:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #8 (permalink) | |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
| Zitat:
Nur ist das Problem wieder, dass ich die Funktionalität der Event-MC's nicht auf sich selbst lassen kann. Sinn der Sache ist es nämlich, dass mir die Leute funktionierende swf's geben können die ich dann dynamisch in einen Container laden möchte, der aber trotzdem noch draggable sein soll.
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi | |
| | |
| | #9 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Das kannst du (sage ich mal) vergessen. Nehmen wir mal an, in einem SWF hat der Programmierer onMouseMove() benutzt. Das gilt immer für den ganzen Film. Wenn du es also in deinem Script killst / überschreibst, ist's auch in dem SWF futsch. Oder anstelle von onRelease() wurde onPress() verwendet - watt nu? Versthst du, was ich meine? edit: Gut, wenn man mit MouseListenern arbeitet erledigt sich vielleicht Problem 1. Das zweite bleibt aber bestehen.
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ Geändert von Der Frager (06-12-2007 um 14:07 Uhr) |
| | |
| | #10 (permalink) |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
|
Ich verstehe schon was du meinst. Allerdings meinte ich mit "Leute" nicht irgendwelche Fremde die mir schei** schicken, sondern meine Kollegen in der Firma. Die sich natürlich an strikte Vorlagen halten würden. Deshalb war mein ursprünglicher Plan ja mit MovieClip.enabled zu arbeiten. Da brauche ich keine Funktionen ala onRelease() sondern on(release) auf den MC's im Container. Deshalb auch meine ursprüngliche Frage wieso MovieClip.enabled mit der Mausgeschwindigkeit zusammenhängt. Es würde ja perfekt funktionieren, wenn der Mist nicht nur disabled werden würde wenn man die Maus mit einer bestimmten Mindestgeschwindigkeit zieht ![]() Hier der ursprüngliche Code (Auszug): PHP-Code:
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi Geändert von dark-future (06-12-2007 um 14:17 Uhr) |
| | |
| | #11 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
So? Weiß jetzt gar nicht mehr, was im Original von dir großartig anders war - aber scheint zu klappen. PHP-Code:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ Geändert von Der Frager (06-12-2007 um 14:55 Uhr) |
| | |
| | #12 (permalink) |
| Bionicman Registriert seit: Apr 2007 Ort: Oberhausen - NRW
Beiträge: 29
|
Sehr cool. Super großen Dank Frager ![]() So hatte ich mir das anfangs vorgestellt. Kleine Frage noch, wenn jemand Zeit hat: Nehme an das hier ist der erzwungene Framewechsel, hab ich noch nie gesehen, gibts dafür evtl. ne kleine Erklärung oder Link?
__________________ Gruß, Bionicman Deutscher Entwicklerpreis Aruba Studios Quo Vadis Deutsche Spielebranche Dass mir mein Hund das Liebste sei, sagst du oh Mensch sei Sünde, mein Hund ist mir im Sturme treu, der Mensch nicht mal im Winde. Franz von Assisi |
| | |
| | #13 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
onMouseUp ist schneller als onRelease. Das heißt, wenn man direkt die Buttons wieder enablen würde sähe das so aus: MouseUp -> enablen -> onRelease Durch den erzwungenen Framewechsel ist die Reihenfolge jetzt halt so: MouseUp -> onRelease (bzw. eben nicht, da disabled) -> enablen So ungefähr zumindest. PHP-Code:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #14 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
ich darf auch nochmal meinen senf dazu geben ;-) mal ein mc mit dem instanznamen test anlegen und diesen script übernehmen. also das enabled und das umhängen (somit auch das deleten) geht schon und ohne einen frame warten zu müssen. hier wird enabled, wenn sich die maus auf der linken hälfte des mc's befindet. Code: function mach1() {
trace(333);
}
function mach2() {
trace(444);
}
function umhaenger() {
this.onRelease = mach1;
this.onRelease();
this.onRelease = mach2;
this.onRelease();
this.onRelease = umhaenger;
}
test.onRelease = umhaenger;
//
test.onMouseUp = function() {
trace("---");
trace(222);
this.enabled = _xmouse>this._x;
};
test.onMouseMove = function() {
this.enabled = _xmouse>this._x;
};
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (06-12-2007 um 17:06 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |