Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-09-2004, 07:42   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Zürich
Beiträge: 172
zoom mit setInterval

hallo leuts

ich habe folgendes problem:
möchte einen mc per mausklicik auf an einen bestimmten ort schieben, und auf eine bestimmte grösse zoomen. das verschieben klappt schon mal ganz gut, aber wie mach ich das zoomen???

das verschieben sieht mal etwa so aus.....


PHP-Code:
function bewegung_ver(mcy1y2ta) {
    var 
0;
    var 
intervall_id;
    function 
position() {
        
i+1;
        
// Bewegungsgleichung 
        
mc._y math.round(y1+math.pow(math.sin(i*math.pi/2/a), 2)*(y2-y1));
        if (
== a) {
            
clearInterval(Intervall_ID);
        }
    }
    
intervall_id setInterval(positionmath.round(t/a));
}
function 
bewegung_hor(mcy1y2ta) {
    var 
0;
    var 
intervall_id;
    function 
position() {
        
i+1;
        
// Bewegungsgleichung 
        
mc._x math.round(y1+math.pow(math.sin(i*math.pi/2/a), 2)*(y2-y1));
        if (
== a) {
            
clearInterval(Intervall_ID);
        }
    }
    
intervall_id setInterval(positionmath.round(t/a));


kann mir jemand sagen wie ich das zoomen hinbekomme, die scripts fürs verschieben habe ich irgendwie zusammengebastelt....


thx and flash on
m
bamsi ist offline   Mit Zitat antworten
Alt 28-09-2004, 08:07   #2 (permalink)
"Lust auf Stil"
 
Benutzerbild von questionner
 
Registriert seit: Jun 2003
Ort: Florenz
Beiträge: 1.490
Erst mal die Zoom-Funktion deklarieren, z.B.:

// Zoom Funktion
function zoom() {
dein_mc._width += (zielX-dein_mc._width)/5;
dein_mc._height += (zielY-dein_mc._height)/5;
}

Dann setzt Du einen MC als Button ein :
// Schaltflächen = MC
_root.button_mc.onPress = function() {
// Aufruf der Funktion
button_mc.dein_mc.onEnterFrame = zoom;
zielX = 200; //bzw. die gewünschte Größe
zielY = 200; //hier einsetzen
};

Das Verschieben geht auch einfacher und ohne Interval. Brauchst nur Positionen festzulegen für bestimmte Bedingungen sowie die Bewegungsgeschwidigkeit. Dann gibst Du jedem MC eine ID als Bezeichner. Dann kannst Du sogar beides koppeln und je nach Klick auf einen bestimmten Button-MC verschieben sich alle anderen auf die Ursprungskoordinate und zoomen auf die Ursprungsgröße, sofern sie dort nicht schon sind und der durch Klick angesprochenene wandert an die gewünschte Position und zoomt aus.

Kannst sogar noch mit createEmptyMovieclip in alle dein_mc Bilder laden, die dann mit bewegt und auch gezoomt werden. Geht auch mit onRollover und onRollout auf den button_MCs. Nur dann schießt es wild hin und her, je nach dem wie man die Maus und wohin bzw. worüber bewegt.
__________________
Dann geht ein Bild hinein, geht durch der Glieder angespannter Stille - und hört im Herzen auf zu sein.
questionner ist offline   Mit Zitat antworten
Alt 28-09-2004, 08:07   #3 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na es gibt doch die beiden eigenschaften _xscale und _yscale dann kannste doch recht einfach implementieren. zB

PHP-Code:
function yScale(mcstartendta) {
    var 
0;
    var 
intervall_id;
    function 
position() {
        
i++;
        
// Bewegungsgleichung
        
mc._yscale math.round(start math.pow(math.sin(i*math.pi/2/a), 2)*(end start));
        if (
== a) {
            
clearInterval(Intervall_ID);
        }
    }
    
intervall_id setInterval(positionmath.round(t/a));

sowas in der art noch besser ist du zerlegst deine funktionen in die teile die gleich sind und die die nicht gleich sind
zB.
PHP-Code:
function getFactor(tsea){
return 
math.round(smath.pow(math.sin(t*math.pi/2/a), 2)*(s));
}

function 
yScale(mcstartendta) {
    var 
0;
    var 
intervall_id;
    function 
position() {
        
i++;
        
// Bewegungsgleichung
        
mc._yscale getFactor(istartenda);
        if (
== a) {
            
clearInterval(Intervall_ID);
        }
    }
    
intervall_id setInterval(positionmath.round(t/a));

oder du nimmst gleich die robert penner klassen

mfg
alex
__________________
TVNEXT Solutions

Geändert von atothek (28-09-2004 um 08:12 Uhr)
atothek ist offline   Mit Zitat antworten
Alt 28-09-2004, 08:30   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Ort: Zürich
Beiträge: 172
ok, das geht ganz gut, aber er fällt in eine schlaufe und kommt nicht mehr raus wenn ich auf einen andern button klicke....

hmm, zur veranschaulichung lege ich noch das .fla bei



Zitat:
Zitat von questionner
Erst mal die Zoom-Funktion deklarieren, z.B.:

// Zoom Funktion
function zoom() {
dein_mc._width += (zielX-dein_mc._width)/5;
dein_mc._height += (zielY-dein_mc._height)/5;
}

Dann setzt Du einen MC als Button ein :
// Schaltflächen = MC
_root.button_mc.onPress = function() {
// Aufruf der Funktion
button_mc.dein_mc.onEnterFrame = zoom;
zielX = 200; //bzw. die gewünschte Größe
zielY = 200; //hier einsetzen
};

Das Verschieben geht auch einfacher und ohne Interval. Brauchst nur Positionen festzulegen für bestimmte Bedingungen sowie die Bewegungsgeschwidigkeit. Dann gibst Du jedem MC eine ID als Bezeichner. Dann kannst Du sogar beides koppeln und je nach Klick auf einen bestimmten Button-MC verschieben sich alle anderen auf die Ursprungskoordinate und zoomen auf die Ursprungsgröße, sofern sie dort nicht schon sind und der durch Klick angesprochenene wandert an die gewünschte Position und zoomt aus.

Kannst sogar noch mit createEmptyMovieclip in alle dein_mc Bilder laden, die dann mit bewegt und auch gezoomt werden. Geht auch mit onRollover und onRollout auf den button_MCs. Nur dann schießt es wild hin und her, je nach dem wie man die Maus und wohin bzw. worüber bewegt.
Angehängte Dateien
Dateityp: zip plan.zip (32,3 KB, 63x aufgerufen)
bamsi ist offline   Mit Zitat antworten
Alt 29-09-2004, 19:39   #5 (permalink)
"Lust auf Stil"
 
Benutzerbild von questionner
 
Registriert seit: Jun 2003
Ort: Florenz
Beiträge: 1.490
Was meinst Du mit Schlaufe? Habe eben mal reingesehen. Mit gedrückter Maustaste zu bewegen klappt. Zoom out und Zoom in klappt. Position bzgl. Auto klappt. Eisenbahn nicht.
Willst Du die Größe an sich nicht unterschreiten und/bzw. unterschreiten lassen? Dann setzt doch eine if-Abfrage zur Kontrolle bzgl. Ziel oder _width und _height, das die Mindestanfangsgröße nicht unterschritten wird und eine Maxgröße bestimmt wird.


----------------------------------

Jetzt weiß wohl, so nehme ich an, was Du meinst:
Wenn man die Rootskalierung wegnimmt, dann schießt es weg. Musst neben der Größenskalierung auch die xy-Position angeben. Aber mit der Rootskalierung klappt es doch auch gut. Kannst Du auch so lassen. Dann ist der Zoomschritt immer stückweise wie bei vielen Karten. Must halt die Min. und Max. begrenzen. Oder soll die Karte nur einmal zoomen mit fließender Bewegung?
Dann kannst Du auch das auf einen MC legen (achte auf Positionierung des MCs zu seinem Nullpunkt) in dem die Karte liegt. Hiermit ist die Karte zugleich bewegbar und zoomfähig, wenn die Maus drüberfährt und geklickt gehalten wird (automatisches Auszoomen und Reaktion auf zum Rand hinbewegen der Maus sowie zurückzoomen bei wiederloslassen, wobei alles auf den Mittelpunkt bezogen wird):

//Größen anpassen
onClipEvent (load) {
this.ypos = 0;
this.xpos = 0;
this.x_mitte = this._width/5;
this.y_mitte = this._height/5;
this.breite = this._width + 200;
this.hoehe = this._height + 100;
this._y = this.ypos + y_mitte;
this._x = this.xpos + x_mitte;
this._xscale = 50;
this._yscale = 50;
this.zooming = false;
}
onClipEvent (mouseDown) {
this.zooming = true;
}
onClipEvent (mouseUp) {
this.zooming = false;
}
onClipEvent (enterFrame) {
if (this._xscale < 200 and this.zooming == true) {
this._xscale +=10;
this._yscale +=10;
} else {
if (_root._ymouse < 20 and this.zooming == true and this.ypos < hoehe) {
this.ypos +=20;
this._y = this.ypos + y_mitte;
}
if (_root._ymouse > 220 and this.zooming == true and this.ypos > -hoehe) {
this.ypos -=20;
this._y = this.ypos + y_mitte;
}
if (_root._xmouse < 20 and this.zooming == true and this.xpos < breite) {
this.xpos +=20;
this._x = this.xpos + x_mitte;
}
if (_root._xmouse > 440 and this.zooming == true and this.xpos > -breite) {
this.xpos -=20;
this._x = this.xpos + x_mitte;
}
}
if (this._xscale > 50 and this.zooming == false and this.ypos == 0 and this.xpos == 0) {
this._xscale -=10;
this._yscale -=10;
}
if (this.ypos > 0 and this.zooming == false) {
this.ypos -=20;
this._y = this.ypos + y_mitte;
}
if (this.ypos < 0 and this.zooming == false) {
this.ypos +=20;
this._y = this.ypos + y_mitte;
}
if (this.xpos > 0 and this.zooming == false) {
this.xpos -=20;
this._x = this.xpos + x_mitte;
}
if (this.xpos < 0 and this.zooming == false) {
this.xpos +=20;
this._x = this.xpos + x_mitte;
}
}
__________________
Dann geht ein Bild hinein, geht durch der Glieder angespannter Stille - und hört im Herzen auf zu sein.

Geändert von questionner (29-09-2004 um 20:12 Uhr)
questionner 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:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele