Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS3 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-05-2010, 03:05   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Anwendung im Vollbildmodus ausführen und gleichzeitig MCs ausrichten

Hallo zusammen,

ich habe ein Problem wofür ich keine Lösung finde.
Und zwar geht es darum, dass meine Flash-Datei hochskaliert werden soll, wenn der Vollbildmodus aktiviert wird. Das ist zunächst kein Problem, jedoch sollen gleichzeitig einige MovieClips an dem rechten und linken Bildschirmrand ausgerichtet werden. Sinnvoll soll dies insbesondere für Bildschirme im Breitbildformat sein.
Beispielsweise befindet sich am rechten Bildschirmrand ein MovieClip. Wird die Anwendung dann in den Vollbildmodus geschaltet soll das MovieClip anschließend wieder am rechten Bildschirmrand ausgerichtet werden.
Die Anwendung hat eine Auflösung von 800x600 Pixel und wenn diese jetzt im Vollbildmodus bei einer Bildschirmauflösung von bsp. 1280 x 800 Pixel dargestellt wird, muss dieser MovieClip manuell per ActionScript versetzt werden.

Mein Ansatz sieht folgendermaßen aus:

Code:
	
stage.scaleMode = StageScaleMode.SHOW_ALL;
stage.align = StageAlign.TOP_LEFT;
vollbild_mc.addEventListener(MouseEvent.CLICK, onMouseClick);
		
function onMouseClick(e:Event) {
	stage.displayState = StageDisplayState.FULL_SCREEN;
	rechteck_mc.x = stage.fullScreenWidth;
}
rechteck_mc ist der MovieClip, welcher am rechten Bildschirmrand ausgerichtet werden soll, allerdings wird der Wert fullScreenWidth nicht auf die maximale Bildschirmauflösung gesetzt. Ich vermute mal, dass es daran liegt, das die Bühne einfach hochskaliert wird und die gleiche Anzahl der Pixel beibehält.
Und hier ist der Punkt an dem ich nicht weiterkomme. Wie kann ich den MovieClip korrekt positionieren?
Für Ideen und Tipps bin ich dankbar
vschaefer ist offline   Mit Zitat antworten
Alt 13-05-2010, 09:43   #2 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
Hi,

hast du mal daran gedacht das resizen unabhängig vom fullscreen modus zu machen?
Die Stage feuert RESIZE-Events egal ob du nun in den Vollbildmodus wechselst oder ob du die Fenstergröße änderst.

sowas in der art:

PHP-Code:

stage
.addEventListener(Event.RESIZEstage_resizeHandlerfalse0true);

function 
stage_resizeHandler(evt:Event) : void
{
    
rechteck_mc.stage.stageWidth;

NilsK ist offline   Mit Zitat antworten
Alt 13-05-2010, 10:07   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Aber stageWidth ändert sich ja nicht. Vermutlich wegen stage.scaleMode = StageScaleMode.SHOW_ALL.
vschaefer ist offline   Mit Zitat antworten
Alt 13-05-2010, 10:20   #4 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
achso ... deswegen ist vermutlich auch der wert in "stage.fullScreenWidth" nicht korrekt.

Hast du mal Capabilities.screenResolutionX versucht?
NilsK ist offline   Mit Zitat antworten
Alt 13-05-2010, 10:40   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Nein, dann verschwindet der MovieClip komplett am rechten Rand, da die Pixel von der Bühne ja größer werden und screenResolutionX demnach viel zu hoch ist. Der Wert muss zwischen stageWidth und screenResolutionX liegen. Aber wie berechne ich den Wert exakt?
vschaefer ist offline   Mit Zitat antworten
Alt 13-05-2010, 13:59   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Wenn ich stage.scaleMode auf StageScaleMode.NO_SCALE setzte ist es kein Problem den MovieClip zu Positionieren, aber dann muss ich ja alle Elemente von Hand skalieren. Und das ist ja ein eher unsauberer weg. Da müsste es doch eine andere Möglichkeit geben?
vschaefer ist offline   Mit Zitat antworten
Alt 13-05-2010, 15:03   #7 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
Ich komme grad nicht ganz klar mit den Berechnungen zwischen den zwei Koordinatensystemen. Ich denke aber das es eine korrekte Lösung geben muss!

EDIT: Achso ich glaube der weg über die screenResultionX/Y ist sowieso ziemlich schwach, da man ja mehrere Monitore haben kann.

EDIT 2: code entfernt (war bs)

Geändert von NilsK (13-05-2010 um 15:22 Uhr)
NilsK ist offline   Mit Zitat antworten
Alt 13-05-2010, 16:03   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Der Ansatz war gar nicht so verkehrt. Es zählt bei screenResultionX/Y immer der Monitor auf dem sich die Bühne gerade befindet.
Solange das Seitenverhältnis der Bühne kleiner ist als das von der Bildschirmauflösung funktioniert es. Das kann man ja über eine If-Abfrage steuern:

PHP-Code:
    if(ratioStage ratioRes)
        
rechteck_mc.stage.stageWidth ratioRes  ratioStage;  
    else
        ??? 
        
    } 
Jetzt fehlt nur noch der else-Block. Aber da habe ich leider auch noch keine Lösung für
vschaefer ist offline   Mit Zitat antworten
Alt 14-05-2010, 01:19   #9 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
sicher?
Ich hab den Ansatz wieder rausgenommen, als ich nämlich das Verhältniss der stage-größe geändert hatte hat auch nichts mehr gestimmt.
NilsK ist offline   Mit Zitat antworten
Alt 14-05-2010, 01:40   #10 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
Ok, das hier scheint zu funktionieren:
(der else-Fall ist im Nachhinein auch logisch, aber so ganz trauen tu ich der geschicht noch nicht ;-))


PHP-Code:

stage
.displayState StageDisplayState.FULL_SCREEN;

var 
ratioStage:Number =  stage.stageWidth stage.stageHeight;
var 
ratioRes:Number =   Capabilities.screenResolutionX Capabilities.screenResolutionY;

if(
ratioStage ratioRes)
    
rechteck_mc.stage.stageWidth * (ratioRes ratioStage);
else
    
rechteck_mc.stage.stageWidth
NilsK ist offline   Mit Zitat antworten
Alt 14-05-2010, 10:49   #11 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Ja genau das ist es.
Danke!
vschaefer ist offline   Mit Zitat antworten
Alt 14-05-2010, 10:59   #12 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
kein Thema.
Ich würde es zur Sicherheit trotzdem mal bei einem System mit zwei Monitoren unterschiedlicher Auflösung testen.


Mich persönlich würde immer noch interessieren warum diese Rechnung zu stimmen scheint:

PHP-Code:
stage.stageWidth * (ratioRes ratioStage
Falls das jemand erklären kann wäre ich sehr dankbar. Das war nämlich leider nur geraten.
NilsK ist offline   Mit Zitat antworten
Alt 14-05-2010, 11:27   #13 (permalink)
Neuer User
 
Registriert seit: Oct 2009
Beiträge: 39
Mit ratioRes wird das Seitenverhältnis der Bühne berechnet und mit ratioStage das Seitenverhältnis der Monitorauflösung.
Wenn das Seitenverhältnis von dem Monitor größer ist, sprich der Bildschirm breiter als die Bühne ist, dann muss man den MovieClip der am Rand ausgerichtet werden soll um so viel Pixel nach rechts verschieben, wie das Seitenverhältnis prozentual größer ist als die Bühne.
Bsp:

Bühne: 800 x 600 Pixel => ratioStage: 1 1/3
Monitor: 1440 x 900 Pixel => ratioRes 1,6

ratioStage < ratioRes => Seitenverhältnis vom Monitor ist größer als von der Bühne

ratioRes / ratioStage = 1.2 => Seitenverhältnis des Bildschirms ist 20% größer, also muss man um den Pixel des äußeren Randes zu Berechnen 20% auf die Breite der Bühne hinzurechnen und das macht man mit dieser Formel:
stage.stageWidth * (ratioRes / ratioStage);

So müsste es eigentlich sein.
vschaefer ist offline   Mit Zitat antworten
Alt 14-05-2010, 11:55   #14 (permalink)
Neuer User
 
Registriert seit: May 2010
Beiträge: 87
Zitat:
Zitat von vschaefer Beitrag anzeigen
ratioRes / ratioStage = 1.2 => Seitenverhältnis des Bildschirms ist 20% größer, also muss man um den Pixel des äußeren Randes zu Berechnen 20% auf die Breite der Bühne hinzurechnen und das macht man mit dieser Formel:
stage.stageWidth * (ratioRes / ratioStage);

So müsste es eigentlich sein.
hey danke, das macht durchaus Sinn!
NilsK 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fuse Frage: Höhe und position (stage) d. MC gleichzeitig ausführen nod74 Flash CS3 Professional 3 04-03-2009 16:16
Mehrere Änderungen gleichzeitig ausführen jtmayer Flex allgemein 0 14-03-2008 14:04
Mehrere Keyframes gleichzeitig ausrichten monalisa Flash 4 und Flash 5 4 09-05-2005 15:32
Ausrichten im Vollbildmodus DeDani Flash MX 14 29-01-2004 19:52
Funktion gleichzeitig mehrfach ausführen fl0b0 ActionScript 1 7 22-01-2004 16:09


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele