1

htmlファイルのみを介して(ブラウザで)表示サイズを設定したいFlashBuilderプロジェクトがあります。フラッシュコードでswfのサイズをハードコーディングしたくありません。また、フラッシュ変数でいくつかのパラメーターを提供する必要があります。私のhtmlは、FlashBuilderによって生成された標準のhtmlコードの修正バージョンです。JavaScriptでswfのサイズを設定し、コンテナーdivを使用してみます。したがって、swfを表示するための次のhtmlコードがあります。

<html>   
<head>
    <title></title>
    <style type="text/css" media="screen">
        html, body {
            height:100%;
        }
        body {
            margin:0;
            padding:0;
            overflow:auto;
            text-align:center;
            background-color: #ffffff;
        }
        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">
        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 = {};
        var attributes = {};
        flashvars.json = "some json file.json";
        flashvars.width = "900";
        flashvars.height = "480";
        params.quality = "high";
        params.bgcolor = "#ffffff";
        params.allowscriptaccess = "sameDomain";
        params.allowfullscreen = "true";
        params.wmode = "direct";
        attributes.id = "Main";
        attributes.name = "Main";
        attributes.align = "left";
        swfobject.embedSWF("Main.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>
    <div style="display:block;text-align:left;width:900px; height:480px; position:absolute; top:50px; left:100px">
        <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>
    </div>
</body>
</html>

そして、私のフラッシュメインメソッドでは次のようになります。

public function Main(){

    swfWidth = LoaderInfo(root.loaderInfo).parameters.width;
    swfHeight = LoaderInfo(root.loaderInfo).parameters.height;
    swfFrameRate = LoaderInfo(root.loaderInfo).parameters.framerate;

    json = LoaderInfo(root.loaderInfo).parameters.json;
    loadJsonFile(json); 

    stage.frameRate = swfFrameRate;
    stage.scaleMode = StageScaleMode.NO_SCALE;

    view = new View3D();
    view.width = swfWidth;
    view.height = swfHeight;
    camera = view.camera; 
    cameraController = new HoverController(camera, null, 150, 10, 10);
    this.addChild(view); 
}

ただし、これをブラウザで開くと、表示されるサイズがhmtlで指定されたサイズと一致しません(上記のコードを使用すると、約700x430ピクセルになります)。

私は何が間違っているのですか?

4

1 に答える 1

1

最後に、私はそれを修正することができました。問題は、Flashbuilderによって作成されたMain.htmlとindex.template.htmlでした(これは非常に複雑で、実際に必要なものよりも詳細であるため、修正するのは簡単ではありません。

このジェネレーターを使用して新しい.htmlファイルを作成しました: http ://www.bobbyvandersluis.com/swfobject/generator/index.html

..これで、flashVarsによって提供されるようにステージが設定されます。

これは私のメインが今どのように見えるかです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
        swfobject.registerObject("Main", "11.0.0", "expressInstall.swf");
    </script>
</head>
<body>
    <div>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="850" height="480" id="Main">
            <param name="movie" value="Main.swf" />
            <param name="quality" value="best" />
            <param name="scale" value="noscale" />
            <param name="salign" value="tl" />
            <param name="wmode" value="direct" />
            <param name="bgcolor" value="#cccccc" />
            <param name="allowfullscreen" value="true" />
            <param name="allowscriptaccess" value="always" />
            <param name="allownetworking" value="all" />
            <param name="flashvars" value="json=../somejsonFile.json&amp;width=850&amp;height=480&framerate=60" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="Main.swf" width="850" height="480">
                <param name="quality" value="best" />
                <param name="scale" value="noscale" />
                <param name="salign" value="tl" />
                <param name="wmode" value="direct" />
                <param name="bgcolor" value="#cccccc" />
                <param name="allowfullscreen" value="true" />
                <param name="allowscriptaccess" value="always" />
                <param name="allownetworking" value="all" />
                <param name="flashvars" value="json=../somejsonFilejson&amp;width=850&amp;height=480&framerate=60" />
            <!--<![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>
    </div>
</body>
</html>
于 2012-08-29T09:59:09.237 に答える