Hilfe zur Tween Klasse (Zoom & Bewegung)

Chepokie

Grünschnabel
Hallo zusammen,

habe folgendes Anfängerproblem:
Möchte ein geladenes Bild bei Mausklick zoomen, was soweit auch funktioniert. So bald die Maustaste losgelassen wird soll dieses Bild noch ein wenig weiterzoomen (und dabei natürlich in der Mitte der Bühne bleiben) mittels der Tween Klasse. Das passiert nur zum Teil, also er zoomt zwar, aber positioniert sich nicht neu (das passiert erst wieder, wenn man die Maustaste wieder drückt).

Hier ein kleiner Auszug:
...
new Tween(myLoader, '_xscale', mx.transitions.easing.Regular.easeOut, myLoader._xscale,endZoomX, 1, true);
new Tween(myLoader, '_yscale', mx.transitions.easing.Regular.easeOut, myLoader._yscale,endZoomY, 1, true);
new Tween(myLoader, '_x', mx.transitions.easing.Regular.easeOut, myLoader._x, (Stage.width/2) - (myLoader._width/2), 1, true);
new Tween(myLoader, '_y', mx.transitions.easing.Regular.easeOut, myLoader._y, (Stage.height/2) - (myLoader._height/2) - 14, 1, true);
...
"Traces" vor und nach diesen Aufrufen haben gezeigt, dass keine Veränderung stattgefunden hat (_scale, _x,... blieben unverändert), sichtbar war schon eine daher:
1) Muss ich nach dem skalieren vielleicht irgendwie warten? Geht das irgendwie?
2) habe beim Durchforsten diverser Foren gelesen, dass externe Bilddaten ihren Registrierungspunkt oben links haben. Liegt es vielleicht daran? Kann ich den nachträglich ändern? Vermute aber, dass das nicht das Problem ist.
3) Irgendwo habe ich auch aufgeschnappt, dass man das vielleicht eher mit zwei MovieClips löst!

Würde mich über Tipps und Hinweise freuen, verzweifle langsam.
Danke im Voraus

Gruß
Chepokie
 
Hallo,
der kleine Auszug ist in der Tat eher klein - und das Problem daraus nicht ersichtlich. Kannst du einmal etwas mehr Code posten oder noch besser die fla?

Ich persönlich würde nicht die Tween-Klasse nehmen, sondern ein onEnterFrame. Benutzt du AS2.0 oder 3.0? Welche Version von Flash? etc.

Gruß
jens
 
Hallo,
erstmal Danke für die schnelle Antwort.

on(press)
{
onEnterFrame = function()
{
_root.showroom.ZoomIn();
}
}

on(release)
{
delete onEnterFrame;
_root.showroom.endZoom(true);
}

der oben gezeigte Quelltext ist an den ZoomButton gebunden.

Die aufgerufene Funktion sieht in etwa so aus:
this.myLoader._xscale *= 1.02;
this.myLoader._yscale *= 1.02;
this.myLoader._x = (Stage.width/2) - (this.myLoader._width/2) ;
this.myLoader._y = (Stage.height/2) - (this.myLoader._height/2) - 14;

wie gesagt, das oben gezeigte funktioniert bei gedrückter Maus und funktioniert auch einwandfrei. Nun möchte ich aber anschließend ein "weiches" zoomen haben, was zum Ende langsamer wird, daher rufe ich bei on(release) die Methode endZoom() auf. Dort stehen halt die erwähnten Tween-Funktionen. Verwende FlashCS3.

Danke nochmal...
 
Hiho,
wenn man Flash CS3 verwendet sollte man nicht mit <Flash 5 Synatx herumlaufen. Probier es mal so:

Code:
_root.but.onPress = function() {
	this.onEnterFrame = function() {
		this._xscale *= 1.02;
		this._yscale *= 1.02;
		this._x = (Stage.width/2)-(this._width/2);
		this._y = (Stage.height/2)-(this._height/2)-14;
	};
};
_root.but.onRelease = function() {
	this.ziel = this._xscale + 30;
	this.onEnterFrame = function() {
		this._xscale += (this.ziel - this._xscale) / 6;
		this._yscale += (this.ziel - this._yscale) / 6;
		this._x = (Stage.width/2)-(this._width/2);
		this._y = (Stage.height/2)-(this._height/2)-14;
		if(Math.abs(this.ziel - this._xscale) < 1) {
			delete(this.onEnterFrame);
		}
	}
}

Der Code muss natürlich auf dem Schlüsselbild stehen, wo auch dein MC drin ist, un dnicht auf dem MC selbst.

Viel Erfolg nohc,
jens
 
Zurück