hoven/zoomen bei rollover zentriert

gnom

Grünschnabel
hoven/zoomen bei mouse roll over zentriert [gelöst]

Moin werte Gemeinde,

ich habe hier in einem alten Post eine Datei gefunden die im Grunde genau das ist, was ich suche. http://www.tutorials.de/flash-platt...mouseout-wieder-zurueckschrumpfen-lassen.html Soweit so gut. Bie hier geht alles wunderbar und ich verstehe auch alles zum großteil. Ich habe nur ein riesen Problem, hinter dass ich gerade gar nicht komme.

Die Quadrate zoomen relativ zur linken oberen Ecke, ich würde sie aber gerne zentral zoomen. Leider bekomm ich maximal eine Diagonale aller Quadrate raus. Kann mir vielleicht einer weiterhelfen und einen Tip geben, wie ich weitermachen kann oder was ich falsch mache.

Hier mal noch einen meiner Versuche vom friggeln:

PHP:
var gap = clip2._x - (clip1._x + clip1._width);
//var xgap = obj._width / 2;
//var ygap = obj._height / 2;

//Funktionen für mouserollover und mouserollout

for (var i=1; i<=4; i++) {
	this["clip" + i].onRollOver = function() {
		grow(this);
	}
	this["clip" + i].onRollOut = this["clip" + i].onDragOut = function() {
		grow(null);
	}
}

//Funktion grow

function grow(dest) {
	this.onEnterFrame = function() {
		
		var done = true; //Sicherheitsabfrage
		
		for (var i=1; i<=4; i++) {
			var obj = this["clip" + i];	//Variable Objekt definieren und mit "clip" verknüpfen
			
			if (obj != dest) {	//fast Unklar, Status abfrage
				var ds = 100;
			} else {
				var ds = 200;
			}
			
			obj._xscale += (ds - obj._xscale) / 4; //unklar
			obj._yscale = obj._xscale;
			if (Math.abs(obj._xscale - ds) < 1) {
				obj._xscale = obj._yscale = ds;
			} else {
				done = false;
			}
			
			if (i >= 1) {
				obj._x = this["clip" + (i - 1)]._x + this["clip" + (i - 1)]._width + gap;
	
				//obj._y = this["clip" + (i - 1)]._y + this["clip" + (i - 1)]._height;
			}
		}
		if (done) delete this.onEnterFrame;
	}
}

danke euch ersteinmal und beste

Ben
 
Zuletzt bearbeitet:
Hallo udn Willkommen auf tutorials.de, Ben!

Am besten postest du einmal die fla, damit wir sehen können was schief geht. Zu den unklaren Stellen im Code:

if (obj != dest) { //fast Unklar, Status abfrage
Hier wird einfach je nachdem, um was für ein Objekt es sich handelt, die Zielgröße des Objektes eingestellt. Also die Größe, die es haben soll, wenn zuendeskaliert wurde. So weit ich das überblicken kann geht es darum, dass halt bei rollOut wieder die Ursprungsgröße (ds = 100%) wiederhergestellt werden soll, bei rollOver hingegen die doppelte (ds = 200%).

obj._xscale += (ds - obj._xscale) / 4; //unklar
Das ist eine gängige Standartformel für Animationen. Man nimmt (ziel - aktuell) / x, dann wird je nach x der entprechende Wert schön animiert angepasst.

Ohne fla kann ich dir nicht viel weiter helfen...
Gruß
jens
 
Moin Jens,

vielen Dank schon einmal. Manchmnal setzt das logische Denken im Hirn aus und alles ist nicht mehr so klar, wie es sein sollte; aber mit deiner Erklärung komm ich schon mal weiter.

Zu der .fla. auf der originalen Seite, der ihr Link ich oben postete gibt es das original fla. Ich häng gern noch einmal eines meine Probe-Friggel-fla`s an.

Noch mal kurz zur Erklärung: Ich würde gerne, dass die Quadrate zentriert zoomen/hoven.

Beste und Vielen Dank

ben
 

Anhänge

  • growbox.fla
    7,6 KB · Aufrufe: 22
Ben,
gezommt wird immer um den Koordinatenursprung eines Objektes. Zumindest, wenn man das per xscale/yscale oder width/height macht. Die einfachste Möglichkeit, das zu machen, wäre es die Quadrate so zu verschieben, dass ihr Koordinatenursprung in deren Mitte ist. Dazu Doppelklickst du auf eines, markierst alles und gibst im Eigenschaften-Fenster für x und y jeweils -21 ein (das ist die Breite bzw. Höhe / 2).

Der Koordinatenursprung ist im folgenden Bild markiert
Unbenannt.jpg

Eventuell musst du danach noch etwas herumfriemeln, damit es wieder passt - die Quadrate haben dann schließlich neue Koordinaten. Namentlich muss diese Zeile im Code angepasst werden:

Code:
obj._x = this["clip" + (i - 1)]._x + this["clip" + (i - 1)]._width + gap;

Gruß
jens
 
Jens,

der Hammer! Den Move mit dem Koordinatenschnittpunkt versuch ich schon seit fast einem Jahr herauszufinden. Ich hab mich shcon für zu intelligent dafür befunden ;-)

Also ersteinmal feine Sache und vielen Dank für die schnelle Antwort.

Bis zum nächsten Problem

Beste

Ben
 
2te hooven/zoomen - bei animation von bildern mit-/wegbewegen der restlichen bilder

Moin werte Gemeinde,

nachdem mir bei der letzten Frage sehr schnell und sehr fein weitergholfen wurde, wende ich mich noch einmal an euch.

Soweit geht nun alles, jedoch will ich noch, dass beim zoomen/hooven der Bilder, die restlichen "platzmachen". Bei sämtlichen in der Reihe nachfolgenden Bilder funktioniert das, jedoch nicht bei den vorran gegangenen in der Reihe. Mir ist schon klar, bei welcher Stelle es im code ist.
In Zeile 24 wird die Variable für die dynamischen Bilder definiert:
PHP:
var obj = this["clip" + i]
durch das hochzählen mit "i" kommt es, dass nur die nachfolgenden Bilder sich wegbewegen.

Theoretisch weiss ich wie es gehen könnte, doch ich kann mich leider grad nicht für Flash verständlich ausdrücken; es müsste doch heissen:

PHP:
var obj = this["clip" + i] & this["clip" - i];

aber das will Flash nicht. Meine zweite Idee ist noch, dass man an der Stelle abfragt welche clips NICHT der aktuelle clip ist und diese dann als Variable definiert. Da blick ich aber grad nicht mehr durch. Vielleicht hat jemand eine Idee, in welche Richtung ich gehen muss.

Beste

Ben
 

Anhänge

  • growbox.fla
    7,6 KB · Aufrufe: 22
Zuletzt bearbeitet:

Neue Beiträge

Zurück