Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-05-2005, 11:18   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 64
maus außerhalb der swf --> Lösungsvorschlag!

ich suche schon seit längerem nach einer möglichkeit abzufragen ob sich die maus außerhalb oder innerhalb der in einer html eingebetteten swf datei bedfindet... bisher scheint es mir so das hier niemand was wirklich brauchbares gefunden hat, vorallem bei schnellen bewegungen mit der maus...

dann hab ich einfach mal ein mc in bühnengröße aufgezogen und einfach ein rollOver und rollOut draufgelegt...

ActionScript:
  1. on (rollOut){
  2. var mouse_out=true;
  3. trace(mouse_out);   
  4. }
  5. on (rollOver){
  6. var mouse_out=false;
  7. trace(mouse_out);
  8. }

was soll ich sagen... funktioniert einwandtfrei, egal wie schnell man die maus bewegt... nur auf dem MAC funktionierts leider nur teilweise!
es will mir jetzt ja wohl keiner sagen das ich der erste bin der das ausprobiert hat, oder bin ich heut (wie so oft) voll neben der spur?!
StefNw ist offline   Mit Zitat antworten
Alt 23-05-2005, 11:54   #2 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
dein Vorschlag funktioniert einwandfrei, solange keine anderen Buttons oder MCs mit Buttonfunktion im Film sind.


Leg doch noch mal einen kleinen Button auf die Bühne!
Dann hat dein großer ein rollout, wenn die Mausüber dem kleinen ist.

Besser mit hitTest machen.
__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 23-05-2005, 12:42   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 64
naja, aber wenn man den mc in den hintergrund legt, und zusätzlich noch die ränder abfrägt... also:

ActionScript:
  1. on (rollOut){
  2. var mouse_out=true;
  3. trace(mouse_out);
  4. }
  5. on (rollOver){
  6. if (_xmouse>1 and _xmouse<Szene.width and _ymouse>1 and _ymouse<Szene.height) {
  7. var mouse_out=false;
  8. trace(mouse_out);
  9. }
  10. }

würde es so funktionieren?

(ps: danke für die antwort)
StefNw ist offline   Mit Zitat antworten
Alt 23-05-2005, 12:51   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Ort: In the arena
Beiträge: 165
Zitat:
naja, aber wenn man den mc in den hintergrund legt, und zusätzlich noch die ränder abfrägt...würde es so funktionieren?
hmm, wenn der rollOver nicht getriggered wird, hilft auch keine mausposition. hinzu kommt: wenn die maus ausserhalb der bühne ist, gibt es auch kein onMouseMove/_xmouse/_ymouse mehr (jedenfalls nicht a la _xmouse=-2).

also eher so wie nullidee meinte: hitTest!

grüße
-sh
subHero ist offline   Mit Zitat antworten
Alt 24-05-2005, 07:41   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 64
so meinte ich... :)

also mir hat das jetzt gestern keine ruhe gelassen, und hab das mal so versucht zu basteln... und es funktioniert...!

ich hab ein vollflächigen mc im hintergrund:
ActionScript:
  1. on (rollOut) {
  2.     _root.state = "out";
  3. }
  4. onClipEvent (load) {
  5.     useHandCursor = false;
  6.     rand = 5;
  7.     max_x = Stage.width-rand;
  8.     max_y = Stage.height-rand;
  9. }
  10. onClipEvent (enterFrame) {
  11.     if (_root._xmouse>rand and _root._xmouse<max_x) {
  12.         if (_root._ymouse>rand and _root._ymouse<max_y) {
  13.             _root.state = "in";
  14.         }
  15.     }
  16.     _root.label.text = _root.state;
  17. }

diesen mc dann in den vordergrund und auf 0% alpha...
legt man jetzt ein button auf die ebene, lässt der sich wunderbar ansprechen, und gleichzeitig erkennt er immer und zuverlässig ob die maus im SWF oder außerhalb ist... oder täusch ich mich...!?
hab die fla mal mit angehängt!

grüße
Angehängte Dateien
Dateityp: zip inorout.zip (2,8 KB, 6x aufgerufen)
StefNw ist offline   Mit Zitat antworten
Alt 24-05-2005, 08:15   #6 (permalink)
Eisverkäufer
 
Benutzerbild von AlexSchliebner
 
Registriert seit: Aug 2003
Ort: München
Beiträge: 81
...hm, also bei mir zeigt er "Out" an, wenn ich auf einen der drei Buttons fahre. Laut Deiner Definition ist das jedoch nicht das gewünschte Verhalten, die Maus befindet sich ja gar nicht außerhalb.
AlexSchliebner ist offline   Mit Zitat antworten
Alt 24-05-2005, 08:21   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 64
seltsam... bei mir zeigt er "In" an wenn ich über die buttons fahre...
denn _root.state wird ja automatisch "In" sobal die maus innerhalb der vordefenierten begrenzung liegt, egal ob er über einem button ist oder nicht...

komisch wirds bei mir nur wenn ich die swf in eine html datei einbinde, da funktionierts nämlich nur manchmal wenn man die maus rechts außerhalb der swf bringt...
StefNw ist offline   Mit Zitat antworten
Alt 24-05-2005, 08:42   #8 (permalink)
Eisverkäufer
 
Benutzerbild von AlexSchliebner
 
Registriert seit: Aug 2003
Ort: München
Beiträge: 81
probiers mal mit diesem Code
ActionScript:
  1. onClipEvent (load) {
  2.     rand = 5;
  3.     max_x = _width-rand;
  4.     max_y = _height-rand;
  5. }
  6. onClipEvent (enterFrame) {
  7.     xm = _root._xmouse;
  8.     ym = _root._ymouse;
  9.     if ((xm>rand and xm<max_x) and (ym>rand and ym<max_y)) {
  10.         state = "in";
  11.     } else {
  12.         state = "out";
  13.     }
  14.     _root.label.text = state;
  15. }

arbeitet ohne onRollOut bei mir zuverlässiger.
AlexSchliebner 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 19:56 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele