scale - zoom

Leider hilfts nicht... schade, so ein einfacher Grund wäre mir gerade recht gekommen. Stimmt denn der Code, so wie er oben steht?

Übrigens stehe ich in stummer Ehrfurcht vor den paar schlanken Zeilen Code, die das alles können.

Ich denke, ich habe Deine Methode nur teilweise verstanden - und dass quasi automatisch von "auf-" nach "zumachen" umgeschaltet wird, ist für mich fast zu genial: denn so hab ich jetzt keine Ahnung, wie ich es jetzt fertigbringen soll, dass sich der Zoom wieder schließt, wenn nicht AUF, sondern irgendwohin anders - AUSSERHALB des zuvor gedrückten Feldes - geklickt wird.

Ob Du mich da noch unterstützen könntest?
 
bitteschön, nochmals datics werk mit meinen textfeldern, die nicht das drin stehen haben, was drinstehen soll (siehe das script im 1. bild). und wie man den zurück-zoom nun per außen-klick aktivieren könnte, ist das haupträtsel.

herzlich H.
 

Anhänge

  • ScaleTry2.zip
    7,3 KB · Aufrufe: 37
Hi,

bei mir wird der Text angezeigt. :confused:

Jedenfalls habe ich die Steuerung etwas geändert: Bei einem Klick auf ein Pad wird wie gehabt die Methode zoom aufgerufen, aber es wird immer 400% als Zielskalierung festgelegt. Auf der Hauptzeitleiste habe ich (wegen der besseren Sichtbarkeit hier gelb) einen Hintergrund-MovieClip angelegt, der beim Klick die Methode zoom auf der Map mit dem Parameter "null" aufruft. In diesem Fall wird als Zielskalierung 100% festgelegt und die Originalposition des Clips als Zielkoordinaten. Die modifizierte Funktion sieht nun so aus:
Code:
function zoom(obj) {
	if (obj == null) {
		tx = 0;
		ty = 0;
		dscale = 100;
		_mode = false;
	} else {
		tx = obj._x;
		ty = obj._y;
		dscale = mscale;
		_mode = true;
	}
	dx = -tx * (dscale / 100) + bx;
	dy = -ty * (dscale / 100) + by;
	go();
}

Gruß
.
 

Anhänge

  • ScaleTry2.zip
    16,6 KB · Aufrufe: 40
Ganz wunderbar - nicht nur, dass es jetzt mit dem "Außenklick" funktioniert, sondern die großgezoomten Felder bleiben groß und rücken, wenn angeklickt, in den Mittelpunkt! Wirklich perfekt.

Wegen des Textes: ja, wird schon was angezeigt, aber leider immer dasselbe, mit einer anderen Nummer dahinter. Ich dachte ja, man kann mit dem da
PHP:
stop();
   bildtext1 = "ein text";
   bildtext2 = "noch ein text";
   for (var i = 0; i<5; i++) {
   	map["pad"+(i+1)].container.loadMovie("bild"+(i+1)+".jpg");
   	map["pad"+(i+1)]._xscale = map["pad"+(i+1)]._yscale=40;
   	map["pad"+(i+1)].textfeld.htmlText = bildtext+(i+1); 
 }
die obigen Texte "ein text" und "noch ein text" usw. da einlesen. Und dafür stimmt mein Code eben nicht. Hab jetzt mal die Anführungsstriche bei "bildtext" entfernt, geht aber auch nicht. Macht man das vielleicht mit einem "Array"? Und wenn ja, wie?

nochmals 1000 dank für die zoom-lösung!
 
Hallo,
also, frag mich bitte nicht wieso, aber wenn Du Deine Varable so kapslest:

Code:
map["pad"+(i+1)].textfeld.htmlText = eval("bildtext"+(i+1));

Dann funktioniert's.

Muss irgendwas mit dem Zusammenstellen (addieren) von Strings zu tun haben, jedenfalls scheint das eval() den Namen so zu setzen, dass Flash damit was anfangen kann.
Wirklich verstanden, warum das so ist, hab ich aber auch noch nie ;)
 
Noch eine Frage: um das geklickte "pad" im vergrößerten Zustand zu deaktivieren (damit zb. hinzugeladene Elemente klick- und bedienbar werden), habe ich jetzt den Code auf dem pad um eine Zeile erweitert:
PHP:
on (press) { 
   	_parent.zoom(this);
   	this.enabled = false;
 }
Das mit dem Deaktivieren funktioniert. Wie aber kann ich beim Zurückzoomen (also beim Klick auf den Background) die pads wieder "enablen"? Ich habe das so versucht, auf dem Background:
PHP:
on (press) {
   	_parent.map.zoom(null);
   	for (var i = 0; i<16; i++) {
   		map["pad"+(i+1)].enabled = true;
   	}
   }
Aber da ist natürlich der Hund drin. Könntet Ihr mir sagen, wo?
 
Von wegen "bedienbar", wie ich vorher meinte - jetzt bin ich völlig perplex: wenn man eine Schaltfläche reinlegt in den "pad"-mc, reagiert sie nicht...
 
Hi,

achso! ;) In diesem Fall muss es lauten:
PHP:
map["pad"+(i+1)].textfeld.htmlText = this["bildtext" +(i+1)];
Ansonsten baust Du Dir nur einen String aus "bildtext" und einer Zahl zusammen, der angezeigt wird. Um eine Referenz auf eine Variable zu bekommen, musst Du wie oben den Array-Zugriffsoperator verwenden.

Gruß
.
 

Neue Beiträge

Zurück