Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Browser displaying application as too large, Flex Flash

I am building a website with flash builder. I built a gallery with thumbnails that scroll horizontally along the bottom, and when selected show a title and fullsize image.

The problem I am having is that it works and looks great on my computer, in all resolutions and FF, IE and Chrome - however, on my friend's computer, the entire application is too big for his browser, so all he sees is the title, image and the very top of the horizontal scrollbar.

How do I decrease the size of display on his computer, and how do I determine what is causing the misfit? The application width and height are both set to 100%, so I really don't know why this is happening.

Thank you for any help and advice!

EDIT

Is there maybe a way to test the size of the screen that it will be displayed on and adjust the application height/width accordingly? I am more accustomed to Flex for mobile, not browser...

Interestingly, when I made application height ="80%", it made the problem even worse on his computers... which is counterintuitive because it should have made the application smaller and more able to fit his screen - would a screen shot help?

NEWEST EDIT

Alright - on his computers, it appears the application is being resized to the size of his moniter and not to the area available within his browser (moniter space minus toolbars), but with MY Computers it is adjusting automatically if I resize the browser ---> How can I correct this?

HTML EMBED CODE:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR. 

Learn more about Flex at http://flex.org 
// -->
<head>
    <title></title>
    <meta name="google" value="notranslate" />         
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and 
         the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as 
         the percentage of the height of its parent container, which has to be set explicitly.  Fix for
         Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show 
         if JavaScript disabled.
    -->
    <style type="text/css" media="screen"> 
        html, body  { height:100%; }
        body { margin:0; padding:0; overflow:auto; text-align:center; 
               background-color: #000000; }   
        object:focus { outline:none; }
        #flashContent { display:none; }
    </style>

    <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
    <!-- BEGIN Browser History required section -->
    <link rel="stylesheet" type="text/css" href="history/history.css" />
    <script type="text/javascript" src="history/history.js"></script>
    <!-- END Browser History required section -->  

    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
        // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
        var swfVersionStr = "11.1.0";
        // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
        var xiSwfUrlStr = "playerProductInstall.swf";
        var flashvars = {};
        var params = {};
        params.quality = "high";
        params.bgcolor = "#000000";
        params.allowscriptaccess = "sameDomain";
        params.allowfullscreen = "true";
        var attributes = {};
        attributes.id = "PhotoGallery";
        attributes.name = "PhotoGallery";
        attributes.align = "middle";
        swfobject.embedSWF(
            "PhotoGallery.swf", "flashContent", 
            "100%", "100%", 
            swfVersionStr, xiSwfUrlStr, 
            flashvars, params, attributes);
        // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
        swfobject.createCSS("#flashContent", "display:block;text-align:left;");
    </script>
</head>
<body>
    <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough 
         JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
         when JavaScript is disabled.
    -->
    <div id="flashContent">
        <p>
            To view this page ensure that Adobe Flash Player version 
            11.1.0 or greater is installed. 
        </p>
        <script type="text/javascript"> 
            var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://"); 
            document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
                            + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" ); 
        </script> 
    </div>

    <noscript>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="PhotoGallery">
            <param name="movie" value="PhotoGallery.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#000000" />
            <param name="allowScriptAccess" value="sameDomain" />
            <param name="allowFullScreen" value="true" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="PhotoGallery.swf" width="100%" height="100%">
                <param name="quality" value="high" />
                <param name="bgcolor" value="#000000" />
                <param name="allowScriptAccess" value="sameDomain" />
                <param name="allowFullScreen" value="true" />
            <!--<![endif]-->
            <!--[if gte IE 6]>-->
                <p> 
                    Either scripts and active content are not permitted to run or Adobe Flash Player version
                    11.1.0 or greater is not installed.
                </p>
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflashplayer">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </noscript>     

*Latest Edit - march 27 *

I haven't found the cause of this problem yet, and if/when I do I'll update this post. In the meantime, it seems the best solution is using code to automatically adjust to the monitor/screen space - davidethell provided a good example of such code.

Thanks to all for the help!

like image 673
SQLiteNoob Avatar asked Mar 18 '12 15:03

SQLiteNoob


2 Answers

What we've had to do in situations like this is scale the entire application down if the available browser width or height is below a certain threshold. The app doesn't always look as nice scaled down, but if it is a requirement to avoid scroll bars you don't have much choice. Here is the code we use currently:

if ( stage.stageWidth < this.minWidth || stage.stageHeight < this.minHeight ) {
    var widthDiff : Number = stage.stageWidth / this.minWidth;
    var heightDiff : Number = stage.stageHeight / this.minHeight;
    var rescalePercent : Number = ( heightDiff < widthDiff ) ? heightDiff : widthDiff;
    this.scaleX = rescalePercent * 0.8;
    this.scaleY = rescalePercent * 0.8;
}

This code is in a function in the main app mxml file and is called in the application complete handler. We just set the application minWidth and minHeight accordingly to our minimum requirements and check the stage dimensions. Then we rescale based on whichever ratio was more appropriate (height or width).

Hope that helps.

like image 138
davidethell Avatar answered Sep 22 '22 23:09

davidethell


You can listen to JavaScript resize event, and then call your flex resize function using ExternalInterface. If you want to find out what is your monitor size you can simply find it in the Capabilities class. Also consider reading this article about flash attributes at spatially optional scale attribute.

Hope this was helping. Good luck.

like image 40
Ilya Gazman Avatar answered Sep 20 '22 23:09

Ilya Gazman