ERLEDIGT
NEIN
NEIN
ANTWORTEN
18
18
ZUGRIFFE
852
852
EMPFEHLEN
-
29.07.04 19:43 #1Matthias_Nordwig Tutorials.de Gastzugang
Hallo, ich habe mir bisher folgendes Script geschrieben um das Flash immer an die maximal mögliche Größe anzupassen, ohne dabei das Verhältniss "800:600,1024:768,..." zu verlieren:
width = document.body.offsetWidth;
height = document.body.offsetHeight;
fla_width = 0;
fla_height = 0;
function check_window()
{
if ((height!=document.body.offsetHeight) || (width!=document.body.offsetWidth))
{
height=document.body.offsetHeight;
width=document.body.offsetWidth;
set_fla();
}
}
function set_fla()
{
if ((width/height)<(800/600))
{
fla_width = width-3;
fla_height = (fla_width*600)/800;
}
else
{
fla_height = height-3;
fla_width = (fla_height*800)/600;
}
document.getElementById("uhr").style.width=fla_width;
document.getElementById("uhr").style.height=fla_height;
//document.getElementById("uhr2").style.width=fla_width;
//document.getElementsByName("uhr").style.height=""fla_height;
_______________________________________________________
Hier ist das Problem:
Das was dort als Kommentar markiert ist(//document.getElementById("uhr2").style.width=fla_width;
//document.getElementsByName), funktioniert zwar in Opera, jedoch nicht im ie. Umgekehrt, wenn ich das so anspreche wie das nicht auskommentierte(document.getElementById("uhr").style.width=fla_width;
document.getElementById("uhr").style.height=fla_height
, dann das im ie jedoch nicht im Opera.
Hat jemand dafür eine Lösung? Ich möchte auf keinen Fall einen Browserswitch machen, da diese sich ja maskieren lassen. bzw. Mein Opera wird als ie anerkannt.
_______________________________________________________
}
set_fla();
window.setInterval("check_window()",100);
Mit freundlichen Grüßen
Matthias Nordwig
-
Hi,
auch wenn ich aus Deiner Beschreibung nicht ganz schlau werde... eine Browserweiche mitdürfte jedenfalls unabhängig von Maskierungen laufen.PHP-Code:if (document.getElementById("Uhr")) {
// it might be internet-explorer
} else if (document.getElementsByName("Uhr")) {
// it might be opera
} else {
// it might be something very strange
}
Gruß
P.S.: eine andere Möglichkeit wäre, die SWF in eine Tabelle oder ein DIV mit relativen Größenangaben zu setzen (wobei das SWF die relativen Angaben width=100% und height=100% bekommt).Geändert von Datic (29.07.04 um 19:57 Uhr)
-
29.07.04 20:17 #3Matthias_Nordwig Tutorials.de Gastzugang
1. Nein das habe ich net gesucht
Das im Übrigen auch nicht da Opera auch ID's kennt.
Aber: Die Logik währe zu gebrauchen. Hat IE und Opera sonst irgendeinen besonderen Unterschied, der nach Boolean zu unterschiedlichen Ergebnissen führt?
2. ich möchte ja das verhältniss von Länge und Höhe beibehalten das sich das nicht verzieht.
Trotzdem danke!
Mit freundlichen Grüßen
Matthias Nordwig
-
29.07.04 20:23 #4Matthias_Nordwig Tutorials.de Gastzugang
Hier nocheinmal der exakte unterschied:
Opera:
document.getElementById("uhr2").style.width=fla_width;
document.getElementById("uhr2").style.height=fla_height;
(Ich schpreche hier ein <EMBED> an)
IE:
document.getElementById("uhr").style.width=fla_width;
document.getElementById("uhr").style.height=fla_height;
(Ich spreche hier ein <Objekt> an)
Sorry hatte das Problem falsch beschireben.
Nun müsste ich diese ggf. switchen, da der für Opera beim ie ein Exception hervorruft. p.s. "getElementsByName" scheint das alles nicht zu unterstützen.
Mit freundlichen Grüßen
Matthias Nordwig
-
Hi,
ach so...
Ich habe es vor einiger Zeit mal so gemacht:Dabei ist "flashname" die ID im Object und der Name im Embed... habe es allerdings nicht mit Opera getestet.PHP-Code:document.flashname.width=640;
document.flashname.height=480;
Zu 2.: Die Seitenverhältnisse werden beibehalten, wenn Du kein <scale="exactfit"> oder <scale="noborder"> verwendest.
Gruß
-
29.07.04 21:25 #6Matthias_Nordwig Tutorials.de Gastzugang
Hi
Thx nochmal.
Ich habe zwar herausgefunden woran der Fehler lag.
Nun möchte ich jedoch gar kein <objekt> mehr verwenden,
sondern nur noch embed, da der eine höhere Browserkompatibilität aufweist.
Dummerweise geht das da nicht so einfach, da kein Browser das so wie du das beschrieben hast beim embed unterstützt.
Der IE hingegen unterstützt zwar:
"document.getElementById("uhr").width"
Aber Opera nicht
Und
"document.getElementById("uhr").style.width"
unterstützt zwar Opera aber IE nicht. Letzterer gibt zu allem Überfluss auch noch ein Exception aus zu allem Übel auch noch ein Exception aus.
Und exactfit ist das einzige was sich 1. verändern lässt, 2. ohne das es Dinge die über den Rand hinausgehen anzeigt.
Mit freundlichen Grüßen
Matthias Nordwig
-
29.07.04 21:42 #7Matthias_Nordwig Tutorials.de Gastzugang
Hi Habs jetzt.
Wen es interessiert:
width = document.body.offsetWidth;
height = document.body.offsetHeight;
fla_width = 0;
fla_height = 0;
function check_window()
{
if ((height!=document.body.offsetHeight) || (width =document.body.offsetWidth))
{
height=document.body.offsetHeight;
width=document.body.offsetWidth;
set_fla();
}
}
function set_fla()
{
if ((width/height)<(800/600))
{
fla_width = width-3;
fla_height = (fla_width*600)/800;
}
else
{
fla_height = height-3;
fla_width = (fla_height*800)/600;
}
document.getElementById("uhr").style.width=fla_width;
document.getElementById("uhr").style.height=fla_height;
}
set_fla();
window.setInterval("check_window()",100);
Weis net warum ich das nict gleich so gemacht habe. Wahrscheinlich genug gearbeitet heute.
-
äh. Du willst ernstlich das <Object>-Tag weglassen?Nun möchte ich jedoch gar kein <objekt> mehr verwenden, sondern nur noch embed, da der eine höhere Browserkompatibilität aufweist
Bedenke: mit dem Object-Tag erzeugst Du gültiges HTML - das Embed-Tag dient eigentlich nur der Kompatibilität zu Netscape-basierten Browsern (siehe SELFHTML)
ich würde Dir raten, diese Entscheidung doch noch einmal zu überdenken...
Gruß
-
29.07.04 22:59 #9Matthias_Nordwig Tutorials.de Gastzugang
Stimmt.
Hattest übrigens recht lol hab das vorhin anscheinend nicht richtig gelesen:
Ab in nen div damit !
MfG
Matthias
-
Ohne Object geht meines Wissens im IE gar nix, oder habe ich da was verpennt - das letzte Mal, das ich das probiert habe, war das jedenfalls so ....
Ausserdem solltet ihr euch gut überlegen, ob ihr JavaScript UND Flash verwoben auf einer Page einsetzt, meiner Meinung nach schliesst ihr damit zuviele Leute aus, zumal man ein solches Provbelm locker mit Flash / PHP lösen kann.....ohne Browserinkompatibilitäten und den ganzen Murks.
Grüsse
BNum qui exsules restituti? Unum aiebat, praeterea neminem !
http://monalisaoverdrive.de
-
Zugegebenermaßen halte ich es auch für verfehlt, JS und Flash zu mischen, wenn es nicht unbedingt notwendig ist (mit PHP hat, kann man sich (siehe Deinen neuesten Thread
) auch sehr elegant behelfen - allerdings nicht unbedingt, wenn die Größe des Objekts die ganze Zeit nachgeregelt werden soll) - die Skalierung mit JS habe ich einmal in einer Datei verwendet, die nur zum persönlichen Gebrauch im IE bestimmt war.
Ich habe eine Flash-Datei bislang noch nie dynamisch dem Browserfenster anpassen wollen - schließlich entwickle ich für eine bestimmte Größe (und etwaige Änderungen lassen sich bei Bedarf Flash-intern lösen, z.B: durch Skalierung einzelner MCs).
Gruß
-
30.07.04 16:05 #12Matthias_Nordwig Tutorials.de Gastzugang
Hallo nochmal:
Also ich glaube, dass jeder der ein Flashplugin zulässt auch Javascript aktiviert hat. und jene welche es nicht haben (0,00000...%) können sich das .swf eben nur in 800x600 anschauen. Na und?
Vielmehr empfinde ich Flash an sich als problematisch, bezüglich des Ausschließens.
p.s. Ich habe das ganze jetzt übrigens folgender Maßen gelöst:
<body bgcolor="#666666" scroll="no">
<div id="hlayer" style="position: absolute; width:800px; height:600px; z-index: 1; left: 0px; top: 0px" >
<p>
<OBJECT classid="clsid
27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
WIDTH="100%" HEIGHT="100%" id="Uhr" ALIGN="top">
<PARAM NAME=movie VALUE="Uhr.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=scale VALUE=exactfit> <PARAM NAME=wmode VALUE=transparent> <PARAM NAME=bgcolor VALUE=#666666>
<EMBED src="Uhr.swf" quality=high scale=exactfit wmode=transparent bgcolor=#666666 WIDTH="100%" HEIGHT="100%" NAME="Uhr" ALIGN="top"
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT></div></p>
<script language="javascript">
<!--
width =document.body.offsetWidth;
height = document.body.offsetHeight;
fla_width = 0;
fla_height = 0;
function check_window()
{
if((height!=document.body.offsetHeight)||(width!=document.body.offsetWidth))
{
height=document.body.offsetHeight;width=document.body.offsetWidth;set_fla();
}
}
function set_fla()
{
if((width/height)<(800/600))
{
fla_width = width-3;
fla_height = (fla_width*600)/800;
}
else
{
fla_height=height-18;
fla_width=(fla_height*800)/600;
}
document.getElementById("hlayer").style.width=fla_width;
document.getElementById("hlayer").style.height=fla_height;
center_fla();
}
function center_fla()
{
document.getElementById("hlayer").style.left=(width-fla_width)/2;
document.getElementById("hlayer").style.top=(height-fla_height)/2;
}
set_fla();
window.setInterval("check_window()",100);
//--></script>
</body></HTML>
Mit freundlichen Grüßen
Matthias Nordwig
-
nochmal Hi,
schön, dass es anscheinend funktioniert, aber mal eine persönliche Frage:
Willst Du wirklich Deine ganze Flashseite an die Fenstergröße anpassen? Flexibilität in allen Ehren, aber kommt da nicht irgendwann ein "Sumba-Flair" auf?
Bei ausschließlicher Verwendung von Vektorgrafiken funktioniert das sicher ganz gut, aber Bitmaps und Pixelfonts können m.E. durch Skalierung ganz schön versaut werden... Nein, ich will Dich hier nicht kritisieren, ich bin einfach nur interessiert, wie das Ergebnis aussieht. Ist es die selbe URL wie in den HP-Reviews?
Gruß
-
30.07.04 17:42 #14Matthias_Nordwig Tutorials.de Gastzugang
Hi,
kannst mich ruhig kritisieren.
Dazu poste ich ja hier. Schliesslich währe ich ohne deine bzw. eure Hilfe noch nicht so weit.
Ja ist die selbe URL.
p.s.: Wegen der Grafiken habe ich mir ja eben die Mühe gemacht dieses Script zu schreiben: Um Verzerrung zu verhindern. Das funktioniert wie folgt:
800/600=1,33
1024/768=1,33
usw.
deswegen: x/y=1,33
Solange dieses Verhältniss eingehalten wird stimmt alles.
Und da setzt das Skript an. Wenn nämlich x/y<800/600
dann ist y überproportional groß. Wenn x/y>800/600 dann ist x überproportional groß.
Es muss sich am verhältnissmäßig kleineren Wert ausgerichtet werden, um die maximal mögliche Größe nutzen zu können ohne Verzerrung hervorzurufen.
sprich dieser wird dann als Größe für das .swf eingesetzt.
und der andere Wert lässt sich ja aus den 3 Werten berechnen: Beispiel
x steht fest, also errechnet sich y aus (x*600)/800
Das ist das Prinzip der ganzen Aktion.
Im übrigen würde es generell komisch aussehen, wenn der Film beispielsweise 100 x 800 o.ä. angezeigt wird.
Mit freundlichen Grüßen
Matthias Nordwig
-
....
glaub mir, ich sitze wie eine Glucke auf meinen Statistikergebnissen des letzten Jahres, und aus den 283.437 Einträgen kannst du ersehen, das FLash an sich ab Player Version 6,000 zu 93% vorhanden war - die Kombination FlashPlayer / JavaScript aber nur zu 81% - das nenn ich statistisch signifikant.
Es ist eben das bekannte Drittel der User mit Sicherheitsbedenken, bzw die Firmennetzwerke mit Alt-Administratoren, die die Sache schwer machen - mit Flash sind viele von denen angefixt, aber JavaScript halten viele für unnötig, gefährlich und nicht lohnend, so ist das nun mal.
Ausserdem ist ein wesentlicher Grund mit Flash zu operieren die Browserunabhängigkeit, die du mit deinem Script leichtfertig aufgibst.
Aber jeder wie er will....
BNum qui exsules restituti? Unum aiebat, praeterea neminem !
http://monalisaoverdrive.de
Ähnliche Themen
-
Flash Film an Fenster anpassen
Von mgraf im Forum Flash PlattformAntworten: 1Letzter Beitrag: 23.05.06, 16:17 -
Fenster öffnen und anpassen
Von RealSuain im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 19.01.05, 01:21 -
Flash an Fenster anpassen
Von calippo im Forum Flash PlattformAntworten: 11Letzter Beitrag: 07.08.04, 19:39 -
php-Fenster anpassen/verschieben
Von GFX-Händchen im Forum HTML & XHTMLAntworten: 6Letzter Beitrag: 29.01.04, 09:51 -
Fenster anpassen an Bildschirmauflösung!
Von Dark Dämon im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 12.02.02, 15:33





Zitieren
Login





