Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-07-2004, 15:49   #1 (permalink)
Neuer User
 
Benutzerbild von cip22
 
Registriert seit: Apr 2002
Beiträge: 62
Wann werden rollOver-Events ausgewertet?

Habe ein recht komplexes System, bei dem viele kleine Clips, die als Buttons dienen, an der _root befestigt werden.

Mein Problem ist, daß die onRollOver-Events komischerweise *zu selten* ausgewertet werden, also oft nicht registriert werden, auch wenn sie eigentlich auftreten. Deshalb hier meine Frage: Wann werden die überhaupt ausgewertet, und welche Instanz innerhalb eines Gesamtmovies 'wacht' darüber? Ich muß das unbedingt optimieren.

Seltsames Detail am Rand: onPress-Events werden immer ausgewertet, auch wenn ich vorher ein paar Sekunde über dem Clip war und kein onRollOver registriert wurde.

Hat jemand dazu eine Idee?

Und noch eine Frage gleich hinterher: Gibt es irgendeinen Trick, in einem gegebenen Moment zu bestimmen, welcher von all meinen mcs auf der Stage einen rollOver bekommen *müßte*?

Dank für hilfreiche Kommentare...
cip22 ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:04   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
  • Zeige doch mal das Skript, und den Effekt, der bei einem Rollover eintritt
  • Das ein bestimmter MC zu einem bestimmten Zeitpunkt ein RollOver hat
    kann man sicherlich machen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:09   #3 (permalink)
Neuer User
 
Benutzerbild von cip22
 
Registriert seit: Apr 2002
Beiträge: 62
Danke, hat sich erledigt. Habe die Übeltäter gefunden (Haarlinien, die manche Items miteinander verbinden und offenbar rollovers abfangen, weil sie 'on top' angebracht sind).

Allerdings bleibt die Frage, ob man irgendwie ausgeben kann, welcher clip gerade rollOver-Events 'hat'...

An den Scripts ist nix auffällig, ist einfach eine Klasse, die ein onRollOver zugewiesen bekommt. Aber wie gesagt, ich habe die Verantwortlichen und stelle sie gerade zur Rede...
cip22 ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:29   #4 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na du kannst doch bei jedem rollOver eine eigene function aufrufen zB.

PHP-Code:
_global.focusManager=function(pMcReference){
_global._focusMc pMcReference;
trace(pMcReference);
}
this.mc.OnRollOver = function(){
_global.focusManager(this);

__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:41   #5 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
@ atothek

Meintest Du:
PHP-Code:
 trace(_focusMc); 
Oder für was ist die _global Variable?
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:47   #6 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na war halt nur weiter gedacht das wenn man an irgendeiner anderen stelle wissen will welcher ist der mc mit dem focus. kann man sich natürlich auch sparen. bin auch eher aus faulheit auf global gekommen normal nehme ich das nicht für solche sachen. (was functionen betrifft bei vars nehme ich es wenn es hilfreich ist)

PHP-Code:
 this.focusManager=function(pMcReference){
_global._focusMc pMcReference;
}
this.mc.OnRollOver = function(){
if(
_global._focusMc!=thisthis._parent.focusManager(this);

sieht besser aus .)
__________________
TVNEXT Solutions

Geändert von atothek (19-07-2004 um 17:48 Uhr)
atothek ist offline   Mit Zitat antworten
Alt 19-07-2004, 17:49   #7 (permalink)
Neuer User
 
Benutzerbild von cip22
 
Registriert seit: Apr 2002
Beiträge: 62
@ atothek

Ja, das ist klar. Nur: Wenn ich mit einem Haufen Klassen und attachten und anderen mcs arbeite (z.T. nur leere mcs, die linien zeichnen), dann ist es natürlich etwas umständlich, jedem davon erstmal ein onRollOver-Skript zu verpassen bzw. das vorhandene zu modifizieren.

Ich dachte mehr an eine globale Möglichkeit nach dem Motto maus.woraufzeigstdu()

Gruß
cip
cip22 ist offline   Mit Zitat antworten
Alt 19-07-2004, 18:21   #8 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na wenn du schon mit klassen arbeitest ist es doch an und für sich kein großer akt die mc´s die es benötigen ein etsprechendes onRollOver mitzugeben. verstehe da deine klassenarchitektur nicht. ansonsten gibt es keine abfrage bzw. ist mir nicht bekannt.

wenn deine klassen sauber sind sollte das ansich nicht das prob sein wenn du beim erzeugen der "klassen Mcs" eine zeile tiefer das onRollOver ereigniss anführst.
__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 19-07-2004, 19:05   #9 (permalink)
Neuer User
 
Benutzerbild von cip22
 
Registriert seit: Apr 2002
Beiträge: 62
Die Klassen erben alle von MC, ansonsten sind sie weitgehend spezialisiert. Aber das Problem ist eh' gegessen.
In Director gibt's so eine globale Abfrage, die den sprite zurückgibt, der gerade gerollovert wird. Schade, aber im augenblick eh akademisch.

Danke jedenfalls für die Mühe!
cip22 ist offline   Mit Zitat antworten
Alt 19-07-2004, 19:45   #10 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
meinst du sowas...?

gerad emal schnell genagelt das teil...

ActionScript:
  1. mouseWatcher = function(){
  2.    this.mcArray = [];
  3.    this.isActivated = 'no clip';
  4. };
  5.  
  6. o = mouseWatcher.prototype;
  7.  
  8. o.addElementsToArray = function(arr){
  9.       for(var i in arr) {this.mcArray.push(arr[i]);};
  10.       this.activateEvent();
  11. }
  12.  
  13. o.checkEvent = function(){
  14.      var arr = this.mcArray;
  15.      for(var i in arr){
  16.            var mc = arr[i];
  17.            if((mc.hitTest(_root._xmouse, _root._ymouse, true)) &&(this.isActivated == 'no clip')){
  18.               trace('Mouse über '+mc);
  19.               this.isActivated = mc;
  20.            }else if(!this.isActivated.hitTest(_root._xmouse, _root._ymouse, true) && (this.isActivated != 'no clip')){
  21.                trace('Mouse nicht mehr über '+this.isActivated);
  22.                this.isActivated = 'no clip';
  23.            }
  24.      }
  25. }
  26.  
  27. o.activateEvent = function(){
  28.  
  29.      this.onMouseMove = function(){
  30.               this.checkEvent();
  31.      }
  32.      Mouse.addListener(this);
  33. }
  34.              
  35. delete o;
  36.  
  37. myEvent= new mouseWatcher();
  38. myEvent.addElementsToArray([mc1, mc2, mc3, mc4, mc5]);


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 20-07-2004, 15:28   #11 (permalink)
Neuer User
 
Benutzerbild von cip22
 
Registriert seit: Apr 2002
Beiträge: 62
Genau sowas. Chapeau! - Kann es leider nicht gleich ausprobieren, aber erstmal danke!

Flash-intern müßte es so was wie dein mcArray doch schon geben, oder? Nur kommt man da wahrscheinlich nicht dran... Oder man macht son rekursives Teil, das von _level0 ausgehend alle mcs, die zu einem gegebenen Zeitpunkt da sind, in ein array steckt.
cip22 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 11:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele