Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-04-2003, 14:05   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Ort: bremen
Beiträge: 35
MC under Mouse?

ahoj,

gibe es eine möglichkeit herauszufinden, welcher movieclip sich gerade unter dem cursor befindet? und wenn es mehrere sind, denn den, der über allen anderen liegt? ist das irgendwie eingebaut oder muss ich mir das selbst schreiben indem ich durch alle ebenen aller MCs loope und per hittest abfrage, ob jemand unter dem cursor liegt, oder so?

gruss
sebastian
seborg ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:09   #2 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
mach doch ne _xmouse abfrage
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:22   #3 (permalink)
Neuer User
 
Benutzerbild von v0id
 
Registriert seit: Oct 2002
Ort: München
Beiträge: 1.582
oder wie wärs mit nem onRollOver?
v0id ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:23   #4 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
oder mach halt auf alle mc die du testen willst ein
ActionScript:
  1. mc0.onRollOver = function() {
  2.     trace(this._name)
  3. }
gruss harry
HAY ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:40   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Ort: bremen
Beiträge: 35
hmm, ich habe das wohl nicht gut erklärt:

ich bin irgendein movieclip. mit mir zusammen liegen noch beliebig viele movieclips auf der bühne die neben mir, über mir oder unter mir liegen können. auf die programmierung dieser clips habe ich keinen einfluss (mein mitprogrammierer würde mich töten ;-) wenn der benutzer die maus bewegt will ich herausfinden, über welchem movieclip der cursor ist. wenn mehrere, an der stelle wo gerade der cursor ist, übereinander liegen, will ich wissen, welcher von denen zuoberst liegt. ich fürchte, das muss ich mir selbst programmieren, was?

gruss
sebastian
seborg ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:42   #6 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
da sollte getDepth helfen um raus zufinden wo er liegt
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 22-04-2003, 14:58   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Ort: bremen
Beiträge: 35
ich glaube, so gehts:

ActionScript:
  1. Movieclip.prototype.mcUnderMouse = function() {
  2.     var topmost = Number.NEGATIVE_INFINITY;
  3.     var topmc = null;
  4.     for (i in this) {
  5.         if(typeof(this[i]) == "movieclip") {
  6.             var mc = this[i];
  7.             if(mc.hitTest(_root._xmouse, _root._ymouse, true)) {
  8.                 var depth = mc.getDepth();
  9.                 if(depth > topmost) {
  10.                     topmost = depth;
  11.                     topmc = mc;
  12.                     //wenn mc auch aus mehreren mcs besteht, den obersten von denen nehmen
  13.                     var tempmc = mc.mcUnderMouse();
  14.                     if(tempmc != null) {
  15.                         topmc = tempmc; 
  16.                     }
  17.                 }
  18.             }
  19.         }
  20.     }
  21.     return topmc;
  22. };

den zuallerobersten kriegt man dann mit

ActionScript:
  1. trace(_root.mcUnderMouse());

alles ohne gewähr, das ist ziemlich schnell zusammengehackt.

gruss
sebastian
seborg ist offline   Mit Zitat antworten
Alt 22-04-2003, 15:45   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Ort: bremen
Beiträge: 35
noch ne kleine verbesserung um unendliche rekursionsschleifen zu verhindern, die bei einigen pathologischen umständen auftreten können....

ActionScript:
  1. //is this a _parent or _parent._parent etc of in_mc
  2. Movieclip.prototype.isAncestorOf = function(in_mc) {
  3.     if(in_mc == null || in_mc == undefined) {
  4.         trace("in_mc is not valid in Movieclip.isAncestorOf()");
  5.         return false;
  6.     }
  7.     var s1 = this._target;
  8.     var s2 = in_mc._target;
  9.     return s2.indexOf(s1, 0) == 0;
  10. };
  11.  
  12. /***********************************************/
  13. //                                            //
  14. // get the topmost movieclip under the mouse //
  15. //                                          //
  16. /******************************************/
  17. Movieclip.prototype.mcUnderMouse = function() {
  18.     trace("Movieclip.prototype.mcUnderMouse "+this);
  19.     var topmost = Number.NEGATIVE_INFINITY;
  20.     var topmc = null;
  21.     for (i in this) {
  22.         if(typeof(this[i]) == "movieclip") {
  23.             var mc = this[i];
  24.             if(!mc.isAncestorOf(this)) {
  25.                 if(mc.hitTest(_root._xmouse, _root._ymouse, true)) {
  26.                     var depth = mc.getDepth();
  27.                     if(depth > topmost) {
  28.                         topmost = depth;
  29.                         topmc = mc;
  30.                         //wenn mc auch aus mehreren mcs besteht, den obersten von denen nehmen
  31.                         var tempmc = mc.mcUnderMouse();
  32.                         if(tempmc != null) {
  33.                             topmc = tempmc;
  34.                         }
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.     }
  40.     return topmc;
  41. };
seborg 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 22:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele