5

以下の関数を使用して、フラッシュ オブジェクトを表示するためのコードを作成します。元のフラッシュ サイズは 320x240 ですが、200x150 として表示したいので、params 幅 200、高さ 150 の関数を使用します。すべてのブラウザーは正しく動作しますが、chrome は動作しません。200x151 として表示されます (コードを検査すると 200x151 のサイズで表示されます)。なんで?

function getFlashCode(params)
{
    debug('getFlashCode');
     var defaultParams = {movie: '', flashvars: {}, width:'', height: ''};
     for (var key in defaultParams)
     {  
         if (params[key] === undefined)
        params[key] = defaultParams[key];
     }

     var flashvars = '';
     for (var key in params.flashvars)
         flashvars += encodeURIComponent(key) + '=' + encodeURIComponent(params.flashvars[key]) + '&';

    var id = "fl" + Math.random();
     var code="";
      code += "         <object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"" + params.width + "\" height=\"" + params.height + "\"  align=\"middle\" id=\"" + id + "\">";
      code += "             <param name=\"movie\" value=\"" + params.movie +  "\" \/>";
      code += "             <param name=\"quality\" value=\"high\" \/>";
      code += "             <param name=\"play\" value=\"true\" \/>";
      code += "             <param name=\"loop\" value=\"true\" \/>";
      code += "             <param name=\"wmode\" value=\"transparent\" \/>";
      code += "             <param name=\"scale\" value=\"showall\" \/>";
      code += "             <param name=\"menu\" value=\"true\" \/>";
      code += "             <param name=\"devicefont\" value=\"false\" \/>";
      code += "             <param name=\"salign\" value=\"\" \/>";
      code += "             <param name=\"allowScriptAccess\" value=\"always\" \/>";
      code += "             <param name=\"flashvars\" value=\"" + flashvars + "\" \/>";
      code += "             <!--[if !IE]>-->";
      code += "             <object type=\"application\/x-shockwave-flash\" flashvars=\""+ flashvars + "\" data=\"" + params.movie + "\" width=\"" + params.width + "\" height=\"" + params.height + "\">";

      code += "                 <param name=\"movie\" value=\"" + params.movie + "\" \/>";
      code += "                 <param name=\"quality\" value=\"high\" \/>";
      code += "                 <param name=\"play\" value=\"true\" \/>";
      code += "                 <param name=\"loop\" value=\"true\" \/>";
      code += "                 <param name=\"wmode\" value=\"transparent\" \/>";
      code += "                 <param name=\"scale\" value=\"showall\" \/>";
      code += "                 <param name=\"menu\" value=\"true\" \/>";
      code += "                 <param name=\"devicefont\" value=\"false\" \/>";
      code += "                 <param name=\"salign\" value=\"\" \/>";
      code += "                 <param name=\"allowScriptAccess\" value=\"always\" \/>";
      code += "                 <param name=\"flashvars\" value=\"" + flashvars + "\" \/>";
      code += "             <\/object>";
      code += "             <!--<![endif]-->";
      code += "         <\/object>";
    return code;
}
4

1 に答える 1

1

まず第一に、そのコードはかなり判読できず、今後いくつかの問題が発生する可能性があります。Kos が言ったように、swfobjectを使用して Flash ファイルを埋め込むことを強くお勧めします。また、デフォルトはすでに指定されているため、ほとんどのパラメーターは必要ありません。これは私の推奨される方法です:

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
var params = {};
var attributes = {};

swfobject.embedSWF("filename.swf", "div-id-here", "200", "150", "9.0.0","expressInstall.swf", flashvars, params, attributes);
</script>

次に、JavaScript コードで指定および設定した ID を持つ div 要素を追加するだけで完了です。すぐに目にする問題についても言及する必要があります。300/240 の幅/高さの比率は 1.25 で、200/150 の比率は 1.333 です。サイズに関しては、スケール モードを変更しない限り (これshowallは可能なオプションの 1 つではありません)、意図された比率を維持するために Flash ムービーに境界線が表示されます。

フラッシュがどのようにプログラムされたのか、あなたが何をしようとしているのか正確にはわかりませんが、試してみて、Adobe のサイトにある params のドキュメントを読むのはあなた次第です。

于 2013-07-23T03:42:29.220 に答える