Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-09-2003, 17:18   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Bochum
Beiträge: 8
Zentrierung bei Zoom über _xscale

Hallo liebes Flashforum,

zerbrech mir gerade den Kopf um folgendes Problem zu lösen. Ich habe eine Europakarte die stufenlos zoombar ist und dazu auch noch gleichzeitig ständig verschoben werden kann. Die maximalen Grenzen zum Verschieben zu definieren ist mir noch gelungen, mein Problem ist nur, dass ich es nicht hinbekomme, die Karte bei Zoomveränderungen automatisch auf den jeweils aktuellen Kartenmittelpunkt zu zentrieren.

Ich habe meine kleine exemplarisches Demofile einmal angehängt, vielleicht seh ich gerade nur den Wald vor lauter Bäumen nicht !

Vielen Dank im voraus für Eure Posts !!!

Bis Dann

Orry
Angehängte Dateien
Dateityp: zip europa.zip (45,8 KB, 94x aufgerufen)
Orry ist offline   Mit Zitat antworten
Alt 17-09-2003, 23:13   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 43
hatte vor kurzem das gleiche problem ... und noch prikelnder wird es, wenn ma es dann endlich geschafft hat mit dem zentrieren ... dann taucht auch noch ein zusätzliches problem auf: was ist, wenn du am rand des bildes bist und dann auszoomst... soll man dann den kartenrand sehen und dieser im mittelpunkt bleiben, oder soll der kartenrand kontinuierlich am bildrand bleiben? ergo: bei minimaler zoomstufe bist du wieder in der mitte...... nun gut: meine lösung:

ich habe mehrere schaltflächen für scrollen und zommen - genaueres must du selbst lösen... jedenfalls legen die den zoom und den scrollfaktor fest ...

und dann ist da ein bild, das bearbeitet werden soll mc_bildplatzhalter (eigentlich sind es immer 2 im wechsel, aber du brauchst ja nur eine - anderes problem *hmpf*)....

und dann ist da folgenes script

this.onEnterFrame = function(){

//zoomen
//abfragen der zoomstufe
if (zoombefehl == 1) {zoomfaktor=(zoomfaktor+0.02*zoom);};
if (zoombefehl == -1) {zoomfaktor=(zoomfaktor-0.02*zoom);};
if (zoombefehl == 10) {zoomfaktor=(zoomfaktor+0.2*zoom);};
if (zoombefehl == -10) {zoomfaktor=(zoomfaktor-0.2*zoom);};
if (zoomfaktor < 1){zoomfaktor =1;}; //eingrenzung der zoomstufe
if (zoomfaktor > 242.20){zoomfaktor =242.20;}; //1000%(ziel)/3.7313(das sind 2500/670)-25.8(das sind670/2500*100-1)
zoom=zoomfaktor+25.8; //1+25,8 = 26,8 ... 670/2500*100 ---> hierzu folgendes 670pixel ist das ding auf der bühne gross und 2500pixel hat das bild ... ergo bei 26,8% passt mein 2500pixel bild auf die 670 pixel bühne ---> maximal ausgezoomt
zoomposition=zoom/26.8


zoomanzeige="zoom "+(int(zoom*3.7314))+"%";
//hiermit zeige ich den aktuellen zoomfaktot an



//scrollen
//abfragen des scrollstatus
if (scrollbefehl ==1){xposition=xposition+(100/zoom);}
if (scrollbefehl ==10){xposition=xposition+(1000/zoom);}
if (scrollbefehl ==-10){xposition=xposition-(1000/zoom);}
if (scrollbefehl ==-1){xposition=xposition-(100/zoom);}
if (scrollbefehl ==-6){yposition=yposition-(100/zoom);}
if (scrollbefehl ==6){yposition=yposition+(100/zoom);}
if (scrollbefehl ==-60){yposition=yposition-(1000/zoom);}
if (scrollbefehl ==60){yposition=yposition+(1000/zoom);}




//plan-instanz zoomen
mc_bildplatzhalter2.mc_bild.plan._xscale=zoom;
mc_bildplatzhalter2.mc_bild.plan._yscale=zoom;

// den fixpunkt der bühne bestimmen (manuell breite und höhe der bühne)
fixpunktx2=670
fixpunkty2=670

// breite und höhe der plan-instanz abfragen
breite2=mc_bildplatzhalter2.mc_bild.plan._width;
höhe2=mc_bildplatzhalter2.mc_bild.plan._height;

// grenzen der planinstanz festlegen --- jeweils der rand
xminusgrenze2=((fixpunktx2/2-breite2/2)+xposition*zoomposition)+315;
xplusgrenze2=((fixpunktx2/2-breite2/2)+xposition*zoomposition)+315+breite2;
yminusgrenze2=((fixpunkty2/2-höhe2/2)+yposition*zoomposition)+25;
yplusgrenze2=((fixpunkty2/2-höhe2/2)+yposition*zoomposition)+25+höhe2;

//
if ((xminusgrenze2<315)and(xplusgrenze2>985) and (yminusgrenze2<25)and(yplusgrenze2>695)) {//prüfung ob ränder innerhalb der bühne
mc_bildplatzhalter2.mc_bild.plan._x=(fixpunktx2/2-breite2/2)+xposition*zoomposition;
mc_bildplatzhalter2.mc_bild.plan._y=(fixpunkty2/2-höhe2/2)+yposition*zoomposition;

}else{ //wenn ränder ausserhalb der bühne
if (xminusgrenze2>315){ //prüfen der linken grenze 315 ist bildrand
mc_bildplatzhalter2.mc_bild.plan._x=0
xposition=(mc_bildplatzhalter2.mc_bild.plan._x-(fixpunktx2/2-breite2/2))/zoomposition;
}else{
if (xplusgrenze2<985){ //prüfen der rechten grenze 985=315+670
mc_bildplatzhalter2.mc_bild.plan._x=fixpunktx2-breite2;
xposition=(mc_bildplatzhalter2.mc_bild.plan._x-(fixpunktx2/2-breite2/2))/zoomposition;
}else{ //wenn doch innerhalb der rechten und linken grenze x position festlegen
mc_bildplatzhalter2.mc_bild.plan._x=(fixpunktx2/2-breite2/2)+xposition*zoomposition;
}
}
if (yminusgrenze2>25){ //prüfen der oberen grenze 25 ist bildrand
mc_bildplatzhalter2.mc_bild.plan._y=0
yposition=(mc_bildplatzhalter2.mc_bild.plan._y-(fixpunkty2/2-höhe2/2))/zoomposition;
}else{
if (yplusgrenze2<695){ //prüfen der unteren grenze 695=25+670
mc_bildplatzhalter2.mc_bild.plan._y=fixpunkty2-höhe2;
yposition=(mc_bildplatzhalter2.mc_bild.plan._y-(fixpunkty2/2-höhe2/2))/zoomposition;
}else{
mc_bildplatzhalter2.mc_bild.plan._y=(fixpunkty2/2-höhe2/2)+yposition*zoomposition;
}
}

};
};



ich hoffe, du blickst da einigermassen durch .... ist nicht einfach ....viel zu viel mathematik.....


gruss garf
garf ist offline   Mit Zitat antworten
Alt 19-09-2003, 08:24   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Bochum
Beiträge: 8
Vielen Dank !!!

Hallo Garf,

vielen Dank für Deine ausführliche Antwort. Da hast Du ja ne Menge Zeit in Dein Skript investiert, ist für mich auf den ersten Blick auch aufgrund der Größe noch etwas undurchsichtig, aber werde mir das nochmal genauer anschauen. Dein Skript scheint mir nur relativ unflexibel zu sein, dass heißt Du arbeitest viel mit konstanten Werten, die nur auf Deine Karte zutreffen, was es natürlich auch schwerer macht den Durchblick zu bekommen. Aber ein wichtiger Punkt scheint mir zu sein, dass Du die Aufsplittung in zwei Mc`s vorschlägst. Ich schau mal.

Also besten Dank

Orry
Orry ist offline   Mit Zitat antworten
Alt 06-08-2004, 09:08   #4 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
hi orry, auch ich suche gerade nach einer lösung für das problem.
wenn du schon was passendes erforscht hast, wäre es nett, wenn du's mich wissen ließest :-)
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 06-08-2004, 09:46   #5 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
so, hat sich erledigt.
hab's für meinen fall hinbekommen.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele