Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2006, 19:57   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Zoom und verschieben

Hallo,

Ich habe ein Problem, welches mir schon seit Stunden Kopfzerbrechen macht.

Ich möchte in meine Flash-Applikaiton eine Zoom- und Verschieben-Funktion einfügen. Zoomen mit Mouse-Wheel und verschieben mit Maus-Taste.

Hat jemand von euch eine Idee, wie man das machen kann? Wenn ich _xscale verändere, wird einfach nur der rechte untere Rand "weggeschnitten" und das restliche Bild neu dargestellt. Wenn ich jedoch die Mitte vergrössern möchte, muss ich das ganze Bild wieder um die hälfte der Differenz von neuem/alten Bild nach links oben verschieben, damit Mitte Mitte bleibt. Das ist auch kein Problem... wenn nicht die verschieben funktion wieder alles durcheinander bringen würde...

Hat jemand von euch eine Idee??

Danke!
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 13:29   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Ist wohl ein unlösbares Problem...

Komisch, dass Flash keine Zoom-Funktion bereit stellt
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 13:53   #3 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Also ein bisschen Einsatz und Ansatz musst du schon selbst erbringen!? Helfen tut man gerne, die Arbeit für andere machen weniger!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 09-02-2006, 14:04   #4 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
warum bei dir der rechte untere Rand weggeschnitten wird verstehe ich nicht.
du must deinen MC natürlich um seinen 0 punkt und nicht am linken oberen eck ausrichten.
dan verschieben sich auch nicht seine x und y positionen beim scalieren.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 09-02-2006, 14:24   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 111
Hi,

sitz gerade vor einem ähnlichen Problem ;-) Was ich dir bis jetzt liefern kann ist eine Verschiebe funktion:


Musst noch einen MC "dragger" erstellen. Wenn man über den mit der Maus fährt, verschiebt sich ein Bild im Container con2. Ich hab den dragger unsichtbar gemacht und in der selben größe wie das bild über selbiges gelegt.
PHP-Code:
with (this.dragger) {
    var 
v0 = (Stage.width+_level0.con._x+mainwidth)/2//bei mir die vertikale Mitte vom dragger
    
var h0 0.5*Stage.height//und die horizontale mittellinie
    
this.dragger.onRollOver = function() {
        
this.onEnterFrame = function() {
            var 
diffv v0-_xmouse;
            var 
diffh h0-_ymouse;
            
con2._y += 0.1*diffh//je größer der Abstand von der Mitte wird, desto schneller fährt das bild nach oben/unten/link/rechts
            
con2._x += 0.1*diffv;
                        
//das hier ist dazu da, dass das BIld nicht aus der Bühne fährt
            
if (con2._y<=-con2._height+Stage.height) {
                
con2._y = -con2._height+Stage.height;
            }
            if (
con2._y>=0) {
                
con2._y 0;
            }
            if (
con2._x>=con._x+con._width) {
                
con2._x con._x+con._width;
            }
            if (
con2._x<=Stage.width-con2._width) {
                
con2._x Stage.width-con2._width;
            }
        };
    };
    
this.dragger.onRelease this.dragger.onReleaseOutside=this.dragger.onDragOut=this.dragger.onRollOut=function () {
        
delete this.onEnterFrame;
    };

Vielleicht hilft dir das erstmal ein bisschen weiter.
Vieleicht hilft auch mir jemand und sagt mir, warum das im Internet Explorer und Opera ohne probleme funktioniert, aber im firefox nicht :-/

naja, bis denn
__________________
O Genie der Herr ehre dein Ego
Beezle-Bug ist offline   Mit Zitat antworten
Alt 09-02-2006, 14:44   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Verschieben ist das kleinste Problem wie du feststellen wirst.

Das Problem bei Flash ist, dass _xscale und _yscale nicht auf die mitte zentriert, d.h. man muss das Bild manuell verschieben.

Ich habe schon mehrere Flash-Animationen im Internet gesehen, welche Zoom-Funktionen haben (z.B. Strassenkarten). Ich würde gerne mal wissen, wie das realisiert wurde. Flash ist ja einentlich ein Programm zum Erstellen von Grafiken... schon komisch, dass zoomen so schwer zu realisieren ist... es lebe OpenGL!!
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 14:49   #7 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
HAY hat doch den Ansatz aufgezeigt:
Zitat:
Zitat von HAY
du must deinen MC natürlich um seinen 0 punkt und nicht am linken oberen eck ausrichten.
dan verschieben sich auch nicht seine x und y positionen beim scalieren.
Also... beim konvertieren in ein Symbol als Registrierungspunkt die Mitte wählen und nicht die linke obere Ecke!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 09-02-2006, 15:10   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Den Tip habe ich gelesen...

Sorry... ich vergass zu sagen, dass ich einen Zoom meines gesammten Movieclips machen möchte (also _root). Kann ich dort auch etwas "ausrichten"?
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 15:14   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
OK, um zu zeigen, dass ich einen Ansatz habe (der nicht funktioniert):

Code:
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {

	var deltatemp:Number;
	
	deltatemp = 1-delta/5000;
	
	pt = {x:_root._xmouse, y:_root._ymouse};
	
	_root._xscale *= deltatemp;
	_root._yscale *= deltatemp;
	
	 var pt2 = {x:pt.x, y:pt.y};
	 
	_root.localToGlobal(pt2);
	
	_root._x -= (pt2.x-pt.x);
	_root._y -= (pt2.y-pt.y);
}

Mouse.addListener(mouseListener);

Ich bin jetzt schon länger als ein Tag an dem Problem.

Besser Erklärt:
Ich zoome und Flash zoomt auf meinen Mauszeiger hin (was ich auch will). Wenn ich jedoch schon sehr weit rein gezoomt habe und meinen Mauszeiger verschiebe, springt das Bild und danach bleibt alles wieder beim Alten.
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 15:28   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
It would be helpful to know, how I can transfer _xmouse (that has its value from the window) to the position in the _root... is there any command for that?
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 17:27   #11 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Zitat:
Zitat von kuehner
Den Tip habe ich gelesen...

Sorry... ich vergass zu sagen, dass ich einen Zoom meines gesammten Movieclips machen möchte (also _root). Kann ich dort auch etwas "ausrichten"?
Pack doch einfach alles auf _root. in einen MC...!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 09-02-2006, 17:49   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Hallo,

Der Tip ist gar nicht schlecht... das Problem ist, dass meine Objekte automatisch erstellt werden.

Kleine Beschreibung:
Ich sende ein XML-Kommando (XML-RPC) and ein Programm und bekomme den Aufbau einer State-Machine zurück. Diese wird dann anhand von Komponenten aufgebaut und angezeigt.

Oder habe ich Deinen Tip falsch verstanden?
kuehner ist offline   Mit Zitat antworten
Alt 09-02-2006, 21:27   #13 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Question

Hmmm... keine Ahnung!?
Kann mir auch nix unter State-Machine vorstellen, hab noch nie von so was gehört!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 09-02-2006, 21:37   #14 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
mal ein kleines beispiel wie mann das machen kann.
in dem container liegt zb. deine strassenkarte links_oben 0/0 ausrichten.
dieser container liegt im mc mittelpunkt auf 0/0
nun den mc auf die bühne. mc mittelpunkt mittig auf die bühne.
fertig


PHP-Code:
mc.teiler mc._xscale 100;
wert=5
mouseListener 
= new Object ();
mouseListener.onMouseWheel = function (delta)
{
    
mc._xscale += delta wert;
    
mc._yscale += delta wert;
    
mc.teiler mc._xscale 100;
};
Mouse.addListener (mouseListener);
mc.onPress = function ()
{
    
//x u. y werte merken
    
this.this._x;
    
this.this._y;
    
this.startDrag ();
};
mc.onRelease = function ()
{
    
//verschiebe werte speichern
    
this.-= this._x;
    
this.-= this._y;
    
// denn inneren container verschieben
    
this.container._x -= this.this.teiler;
    
this.container._y -= this.this.teiler;
    
// und den mc wieder neu positionieren
    
this._x += this.x;
    
this._y += this.y;
    
this.stopDrag ();
}; 
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 10-02-2006, 13:42   #15 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 93
Hallo,

Die Lösung wäre super wenn ich nicht den ganzen Movie-Clip vergrössern möchte. Wie gesagt: Meine Szene wird automatisch erstellt und zusammen gefügt.

Gibt es vielleicht sogar eine Möglichkeit, den _root-Mittelpunkt als "Referenz" zu setzen??

Zusatz: Das mit der State-Machine ist nicht soo wichtig. Ich wollte damit nur erklären, dass das Bild aus Kreisen und Quadraten besteht, die je nach Anwendung unterschiedlich angeordnet werden... also automatisch in der Szene platziert werden

Geändert von kuehner (10-02-2006 um 13:44 Uhr) Grund: Zusatz
kuehner 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:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele