Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-02-2006, 11:45   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Unhappy Bitte helft mir! Proportionales Resize von Fenstern

Hallo,

entschuldigt diesen etwas reisserischen Aufruf, aber ich versuche seit Tagen, dynamisch erzeugte Fenster proportional skalierbar zu bekommen (d.h. dass die Seitenverhältnisse gleich bleiben). Bin mittlerweile ziemlich fertig, weil ich das für einen Flash-Dummy brauch', den ich am Dienstag für meine Fachprüfung benötige. Ich habe also ein "Dynamische-Fenster"-Skript folgendermaßen modifiziert:

Frame 2 des Drag-Buttons innerhalb des window-MCs:
Code:
breiteneu = this._x;
hoeheneu = this._y;
Die Position des Draggers innerhalb des dynamisch erzeugten Fensters wird hier also in Variablen geschrieben.

Frame 1 des Drag-Buttons innerhalb des window-MCs::
Code:
setProperty("_parent", _height, hoeheneu);
setProperty("_parent", _width, breiteneu);
Die Variablen werden hier also dem Fenster als neue Breite und Höhe zugewiesen.

Leider ist das Ergebnis nicht so, wie ich es theoretisch vermutet hätte. Der Dragger bleibt nicht innerhalb des Fensters und somit spinnt dieses auch nur rum. Wo ist also der große Denkfehler? Ich habe übrigens auch schonmal ausprobiert, der Variablen "hoeheneu" den Wert "this._x*1,42" zuzuweisen, also die Proportionalität miteinzubeziehen, aber das war ein noch größeres Fiasko... das stimmt dann plötzlich die Höhe des Fensters überhaupt nicht mehr.

Weiß vielleicht jemand von Euch einen Rat?!

Gruß

aljas
#
Angehängte Dateien
Dateityp: zip zOrder_resize.zip (22,1 KB, 10x aufgerufen)
__________________
Unsere Kurzfilme auf aljas.com
aljas ist offline   Mit Zitat antworten
Alt 04-02-2006, 12:33   #2 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
Zitat:
Frame 2 des Drag-Buttons
du hast in einem frame eines buttons code hinterlegt? das ist schon mal nicht möglich... zumindest nicht in mir bekannten flash versionen bis mx2004pro.

als dragger hab ich zuerst die leiste zum draggen des fensters vermutet, bis ich die .swf sah. deine .fla datei kann ich nicht öffnen weil du des nicht im flashmx2004 format abgespeichert hast.

sollte dieser ecken-dragger im window-fenster sein, dessen größe du mit _width und _height veränderst, so muss du dem ecke-dragger keine extra x,y position zuweisen. es ist viel einfacher, ungefähr so:
PHP-Code:
meinEckenDragger.onPress = function() {
    
_parent.onMouseMove = function() {
        
_width _root._xmouse-_x;
        
_height _root._ymouse-_y;
    };
}; 
es ist übrigens nicht wirklich gut, dass du einem dialog _width und _height werte zuweist, die schrift darin und alles andere wird ebenso verkleinert/vergrößert und verliert an qualität. in solchen fällen benutzt man masken (deren größe dann mit _width und _height veränder wird).

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!

Geändert von artjom (04-02-2006 um 12:41 Uhr)
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 13:06   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Hallo artjom!

Erstmal vielen Dank, dass Du Dich meines Problems angenommen hast!

Zitat:
Zitat von artjom
du hast in einem frame eines buttons code hinterlegt? das ist schon mal nicht möglich... zumindest nicht in mir bekannten flash versionen bis mx2004pro.
Oh nein, entschuldige, hab' mich doof ausgedrückt. Der MC heisst Drag und in ihm liegt der DragBtn mit dem typischen startDrag. Der MC Drag enthält also die zwei Schlüsselbilder.

Zitat:
deine .fla datei kann ich nicht öffnen weil du des nicht im flashmx2004 format abgespeichert hast.
Oh ja, das hab ich verpennt (arbeite erst kurz mit 8, hab mir die Testversion von der Macromedia-Seite gezogen), hab's jetzt als MX2004 hier angehängt!

Zitat:
sollte dieser ecken-dragger im window-fenster sein, dessen größe du mit _width und _height veränderst, so muss du dem ecke-dragger keine extra x,y position zuweisen. es ist viel einfacher, ungefähr so:
Hab' Dein Prinzip verstanden, müsste eigentlich auch funktionieren, allerdings werden ja die Fenster dynamisch erzeugt. Insofern weiß ich nicht, wie ich jeweils nur den einen gewollten Drag-MC eindeutig ansprechen kann...

Das zweite Problem ist, dass ich auch immer noch keine Ahnung habe, wie ich die Proportionalität gewährleisten kann (also, dass z.B das Seitenverhältnis 1:1,42 beim Resizen bestehen bleibt).

Dass die Qualität schlechter wird ist momentan nicht so wild, da ich daran auch nach der Prüfung noch weiterfeilen werde. Ich will bis dahin halt nur die grundsätzliche Funktionalität des Skalierens präsentieren können...

Gruß

aljas
#
Angehängte Dateien
Dateityp: zip zOrder_resize_MX2004.zip (16,3 KB, 9x aufgerufen)
__________________
Unsere Kurzfilme auf aljas.com
aljas ist offline   Mit Zitat antworten
Alt 04-02-2006, 14:48   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Lässt das resizen nicht...

Hallo nochmal,

ich hab jetzt das Pfad-Problem umgangen, indem ich Dein Skript in die Zeitleiste des drag-MCs gelegt habe. Es funktioniert auch, aber leider beendet er das resizen nicht, wenn man die Maus loslässt! Und das, obwohl die onMouseMove-Funktion ja innerhalb der onPress-Funktion liegt... wie kann man das resizen also beenden??

Gruß

aljas
#
__________________
Unsere Kurzfilme auf aljas.com
aljas ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:31   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Et läuft!

Juhuuu!

Mithilfe einiger älterer Threads hier im Forum habe ich das Ding jetzt zum Laufen gebracht. Hab's nochmal als MX2004-File angehängt, falls jemand anders sowas auch mal brauchen kann...

Vielen Dank für die Hilfe!

Gruß

aljas
#
Angehängte Dateien
Dateityp: zip window_order_drag_resize.zip (25,8 KB, 13x aufgerufen)
__________________
Unsere Kurzfilme auf aljas.com
aljas ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:31   #6 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
warum haste im movieclips mit der instanz 'drag' 2 frames? .. den grund muss ich net checken

lösche diese 2 frames, so dass du nur 1 hast (ohne irgendwelchen code drin).
dann funzt diese lösung:
PHP-Code:
function windowObj (titlecontent) {

    
//  get the current depth based on the array
    
id++
    var 
depth id;
    
trace("id: "+id);

    
//  create 
    
_root.attachMovie("window""window"+idid);
    
this.window _root["window"+id];

    
//  position
    
this.window._x defaultX+((id-1)*increment);
    
this.window._y defaultY+((id-1)*increment);

    
// set data
    
this.window.title title;
    
this.window.content content;
    
this.window.myID id;
    
this.window.myDepth zOrderList.length;

    
// set resize event
    
var dlg=this.window;
    
this.window.drag.onPress = function() { 
        var 
nW=_root._xmouse-dlg._x-dlg._width;
        var 
nH=_root._ymouse-dlg._y-dlg._height;
        
this._parent.onMouseMove = function() {
            
trace("xscale:"+this._xscale/100);
            
trace("yscale:"+this._yscale/100);
            
this._width =_root._xmouse-nW-dlg._x;
            
this._height=_root._ymouse-nH-dlg._y
        }; 
    };     
    
this.window.drag.onRelease=function() {
        
delete this._parent.onMouseMove;
    };

    
//
    
zOrderList.push(id);    

du hast übrigens das problem, dass der 'drag' movieclip nicht direkt unten an der ecke des windows-movieclips liegt. dies hat zur folge, dass beim klicken und loslassen der maustasten, der drag-movieclip unterschiedliche positionen annimmt... (bei der vorherigen lösung war es zumindest so).
damit dies nicht passiert, musste den abstand zwischen der rechten seite des windows-movieclips und des drag-movielclips berechnen. diesen abstand ziehst du dann von klick x und y position ab.
damit simulierst du praktisch, dass der window-movieclip dort endet, wo der drag-mc aufhört. und der benutzer klickt genau in die untere ecke des window-mc vieleicht war das dein kleines problem

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:33   #7 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
oh in der selben minute gepostet, das nenn' ich timing
gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:45   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Thumbs up Super!

Zitat:
Zitat von artjom
warum haste im movieclips mit der instanz 'drag' 2 frames? .. den grund muss ich net checken
Tja, das hatte mal einen Grund,... und zwar als ich das Resize noch so gelöst hatte... ist ja auch egal ...
Zitat:
Zitat von artjom
oh in der selben minute gepostet, das nenn' ich timing
Jupp!

Deine Lösung ist natürlich erheblich eleganter, herzlichen Dank dafür... hab se gleich mal übernommen! Ich habe jetzt, da ich das Ding gerne proportional resizen will, nach this._height=_root._ymouse-nH-dlg._y; noch folgendes eingefügt:
PHP-Code:
this._height this._width*1.42
Was hältst Du davon? Da es hierbei auch dazu kommen kann, dass man mit der Maus nicht ganz auf dem Button bleibt, habe ich auch noch
PHP-Code:
this.window.drag.onRelease=this.window.drag.onReleaseOutside=function() 
eingefügt, also das releaseOutside.

Bin sehr, sehr froh und erleichtert, dass das jetzt klappt! Nochmal allerbesten Dank für Deine Mühe und Zeit!!

Gruß

aljas
#
__________________
Unsere Kurzfilme auf aljas.com

Geändert von aljas (04-02-2006 um 15:47 Uhr)
aljas ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:59   #9 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
np
Zitat:
Da es hierbei auch dazu kommen kann, dass man mit der Maus nicht ganz auf dem Button bleibt,
dass kann nicht sein. das was du meinst resultiert dadurch, dass der drag-mc seine breite verändert und da er kein rechteck ist, verändert sich mit ihm seine klick-fläche.
z.b kannst du anfangs auf die mitte des drag-mc klicken (der ein dreieck is). setzt du die breite des drag-mcs aber auf über 500%, so ist in der mitte dieses mcs keine klickfläche mehr. das ding sooo wei ausgedeht, dass die klickfläche erst etwas weiter unten anfängt. mit onReleaseOutside löst man das problem auch, nur mit dem nachteil, dass beim vergrößern des fensters spontan das resizen abgebrochen wird

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!

Geändert von artjom (04-02-2006 um 16:01 Uhr)
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 16:06   #10 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
ahja, das problem kannst du easy lösen, indem du im dragBtn das frame "active" mit einem kompletten rechteck füllst.
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 18:19   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Ort: Münster
Beiträge: 17
Festes Seitenverhältnis

Zitat:
Zitat von artjom
dass kann nicht sein. das was du meinst resultiert dadurch, dass der drag-mc seine breite verändert und da er kein rechteck ist, verändert sich mit ihm seine klick-fläche.
Nein, das meine ich nicht. Falls Du willst, kannst Du ja mal die angehängte SWF oder FLA ansehen. Da ist halt das Seitenverhältnis (durch meine Intervention) festgesetzt. Dadurch rutscht man mit dem Mauszeiger fast zwanghaft aus dem Drag-Bereich des Buttons heraus. Deshalb hatte ich ja gefragt, ob Du die Lösung für das Seitenverhältnis-Problem (this._height = this._width*1.42 für gut hältst.

Aber das ist alles nicht so wild, Hauptsache, das Ding ist jetzt benutzbar!

Gruß

aljas
#
Angehängte Dateien
Dateityp: zip window_order_drag_resize.zip (22,6 KB, 14x aufgerufen)
__________________
Unsere Kurzfilme auf aljas.com

Geändert von aljas (04-02-2006 um 18:20 Uhr)
aljas 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 21:16 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele