Brauche Hilfe zu onMouseWheel

hhjjppww

Mitglied
Hallo,

Ich habe einen MovieClip, der sich durch betätigen des Mausrades(nach oben) vergrößern bzw (wenn das Mausrad nach unten gedreht wird) verkleinern soll.
Leider funktioniert das erst, wenn ich mit gedrükter Links-Maustatse auf den MovieClip klicken und dann das Mausrad betätige. Danach funktioniert es auch ohne lInke-Maustatse auf den MovieClip nur bei allerersten Mal muss ich diese betätigen.
Hier mein Code, den ich beim MovieClip stehen habe. (Muss der vielelicht woanders hin?)
Code:
onClipEvent(load) {
	mouseListener = new Object();
	mouseListener.onMouseWheel = function(delta) {
  		if(delta<0){
			_root.button._height -= 1;
			_root.button._width -= 1;
		} else if(delta>0) {
			_root.button._height += 1;
			_root.button._width += 1;
		}
	}
	Mouse.addListener(mouseListener);
}

Danke im Voraus!
 
Zuletzt bearbeitet:
Hi,

schau mal in den Anhang.

Das einzige Problem was Du bekommst, wenn Du Breite und Höhe um jeweils 5 Pixel veränderst, ist dass das Seitenverhältnis Deines Clips nicht beibehalten wird. Vielleicht ist es günstiger mit _xscale und _yscale zu arbeiten (oder z.B. _width um 5 Pixel zu ändern und _height in Abhängigkeit davon, so dass sich das Verhältnis nicht ändert).

Du musst einmal auf den Film klicken (nicht unbedingt auf den Clip), um ihm den Focus zu geben. Auf einer Webseite könnten ja ausser der SWF-Datei noch andere Objekte sein, die etwas mit dem Mausrad anfangen wollen. ;)

Gruß
.
 

Anhänge

  • mousewheel.zip
    12,4 KB · Aufrufe: 62
Zuletzt bearbeitet:
Bei einem Listener mit absoluten Pfadangaben (_root.mc ) ist es ziemlich egal wo er liegt.
Du kannst den Kram also auch ohne onClipEvent einfach irgendwo in einen Frame schreiben.

Das mit dem Klicken könnte daran liegen, dass der Flashfilm erst den Fokus haben muss, damit er Mausrad- sowie Tastaturaktionen mitkriegt. Es ist auch ganz egal wo man hinklickt.

Da gab es mal ein Javascript, dass den Fokus automatisch auf die swf legt, sofern sie in HTML eingebunden ist, da muss ich aber erstmal nach suchen.
Falls ich es finde steht´s hier dann irgendwann gleich...
 
So legt man den Fokus auf den Flashfilm:
PHP:
getURL("javascript:swfname.focus();void 0;")
wobei swfname wie man u.U. schon vermuten könnte der name der swf sein muss.

Mit dem InternetExplorer klappt dann genau dein Codeschnippsel ohne das man irgendwo klicken muss.
Mit Firefox und "FindAsYouType" bzw "Beim eintippen Suchen" muss man allerdings trotzdem erst klicken.
 
Hallo,

vielen Dank für die schnellen Antworten.
Das mit dem Focus klappt im IE, halt nicht mit dem Firefox. Aber ist dann auch nciht so wichtig.
PS: Datic ich verstehe nicht genau was dort gemacht wird :rolleyes: :
Code:
var offset = (delta / Math.abs(delta));
	clip._height += 5 * offset;
	clip._width += 5 * offset;
	clip.reSize();

Könntets du mir das vielelicht erklären?
(Ich komm mir irgendwie dumm vor.)

PS wenn ich mir deinen Kasten genau angucke, ist es so, dass glaube ich du was falsch gemacht hast. Das kann man an der Schrift erkennen. Wenn man ihn sehr klein scrollt, dann wir die Schrift in die Breit gezogen und wenn man ihn groß scrollt, wir die Schrift in die Höhe gezogen. Gut daran ist aber, dass er sich von der Mitte aus vergrößert. Hängt das mit dem Offset zusammen?

----

Wenn ich gard dabei bin :) , könnte man das auch hinkriegen, wenn man scrollt und dann aufhört, dass es dann so langsam abbremst? hehe ist nur ne Frage. Ist bestimmt sehr schwer und auch nciht super wichtig. Würde natprlich besser aussehen :)
 
Zuletzt bearbeitet:
Naja ich habe das jetzt so gelöst. (Siehe test3.fla und test3.swf )
Aber jetzt bekomme ich ein Problem.
In der .fla Datei seht ihr ja zwei Vielecke. Die sollen gleichmäßig mit der Karte größer werden. Allerdings sollen sie auch die Straße wieder überdecken!
Naja wenn ich das so machen würde:
Code:
for (i=1; i<3; i++){
        _root["strasse"+i]._height += 10;
	_root["strasse"+i]._width += 10;
	_root["strasse"+i]._y -= 5;
	_root["strasse"+i]._x -= 5;
}

Sieht das auf den ersten Blick gut aus, aber wenn man es dann ausprobiert: :(
Denn die Vielecke werden unglaublich und übermäßig groß!
Gibt es da vielleicht einen Trick?
 
Hi,

deshalb habe ich auch geraten, lieber _xscale und _yscale gleichmässig zu verändern. Bei nicht quadratischen Objekten verändert sich ansonsten die Ratio.

Meine Variable "offset" ist nur eine Hilfe, um ein paar Zeilen zu sparen: Sie wird immer 1 oder -1, je nachdem, ob "delta" positiv oder negativ ist. So werden halt entweder 5 oder -5 Pixel addiert. ;)

Die Zentrierung bekommt man einfach hin, indem man den Ankerpunkt des MovieClips in seine Mitte setzt. So würde ich auch ansetzen, um die Markierungen mit zu vergrößern: Karte und die roten Markierungen in einen gemeinsamen MovieClip setzen und diesen dann komplett vergrößern.

Gruß
.
 
Okay danke.

Es hat sich halt mal wieder ein neues Problem aufgetan!
Lad dir bitte die .fla datei (oben erwähnt) runter und schau mal, was passiert, wenn man auf die "Dreiecke" (zumindets sollen es welche sein) passiert. die ganze Karte bewegt, man navigiert also. und wenn man die karte zoomt, werändern sich ja die x und y-koordinaten. und das "Navigieren" funktioniert nciht mehr einwandfrei. Hats du da vielelicht auch ne Lösung für
Wäre echt nett :)
PS: Was das besonder ist, wenn du auf einen der Pfeile in den Ecken klickst und zb an die rechte Wand stößt geht er dann trotzdem weiter, zb nach unten.
Gucks dir einfahc mal an ;)

Mein Güte, das entpuppt sich ja zu was gaaanz schwerem! :(

--- editiert ---

Gibt es vielleicht sowas wie global Variablen? mit denn man dann den Dreiecken die neusten Koordinaten geben kann? (Fiel mir grad so ein!)
Also ich mein Variablen, die man bei "Zoomen" deklariert und auf die man auch dann bei den MovieClips der Dreiecke zu greifen kann
 
Zuletzt bearbeitet:
Zurück