MC größe ändern

Denniz

Erfahrenes Mitglied
Hallo,

ich habe einen MC dessen größe sich jedesmal ändern soll wenn man auf einen link klickt.
Die verschiedenen höhen- und weitenangaben habe ich in 2 Arrays definiert.
Dies ist mein Skript:
PHP:
my_mc._width = 50;
my_mc._height = 50;
var Array1 = [50, 100, 200];
var Array2 = [50, 100, 200];
for (var i = 1; i<=3; i++) {
	this["btn"+i].id = i-1;
	this["btn"+i].onRelease = function() {
		var mcxsize = Array1[this.id];
		var mcysize = Array2[this.id];
		go(mcxsize, mcysize);
	};
}
function go(xsize, ysize) {
	if (_root.my_mc._width<xsize) {
		_root.my_mc.onEnterFrame = function() {
			_root.my_mc._width += 10;
			_root.my_mc._height += 10;
			if (_root.my_mc._width>=xsize) {
				delete this.onEnterFrame;
			}
		};
	} else if (_root.my_mc._width>xsize) {
		_root.my_mc.onEnterFrame = function() {
			_root.my_mc._width -= 10;
			_root.my_mc._height -= 10;
			if (_root.my_mc._width<=xsize) {
				delete this.onEnterFrame;
			}
		};
	}
}
Bislang funktioniert es da die Werte proportional zueinander sind.
Wenn ich aber nun ganz andere x und y größen eintrage die nicht proportional zueinander sind soll mein mc genau diese größe annehmen.
Mit dem skript klappt es nicht da immer nur um +-10 geändert wird.
Ich weiß jetzt nicht wie ich die funktion umschreiben könnte damit es klappt oder ist mein Ansatz falsch?
Hier ein Bsp wie es aussehen soll.
Schön wäre natürlich auch dieser Abbremseffekt.
Hier meine FLA.


Hoffe ihr könnt mir ein tip geben damit ich weiterkomme auch ohne meine allzu größen AS Kenntnisse.

Gruß
-Denniz
 
Vom Grundsatz her, ohne mich jetzt an deiner Fla probiert zu haben, ein Beispiel für eine softe Skalierung mit Abbremsen
PHP:
buttonmc.onRelease=function(){
	this._parent.mc.onEnterFrame=function(){ // du hattest absolute Pfade verwendet (_root). Geht auch.
		// im folgenden die relevante Prinzipien fürs Abbremsen, 
		// die Werte für die Zielbreite/-höhe (hier 80 und 10) kannst du auch aus dem Array holen
		this._width+=(80-this._width)/5; //die 5 ggf. ändern für die Abbremsung, je kleiner desto schneller
		this._height+=(10-this._height)/5;
		// prüfen, wann die gewünschte Größe (annähernd) erreicht ist
		// je nach Abbremsfaktor (oben als Beispiel: 5) evtl. mehr als 1, 
		// musst testen (per trace-Funktion), ob die Bedingung erfüllt wird
		if(Math.abs(80-this._width)<1 && Math.abs(10-this._height)<1){
			delete this.onEnterFrame;
		}
	}
}
Ich denk mal, den Ansatz kannst du für deine Funktion anpassen. :)

Gruß
Rena
 

Anhänge

Zuletzt bearbeitet:
Zurück