2012-08-23 6 views
5

以下の関数を使用して、フラッシュオブジェクトを表示するコードを作成します。オリジナルのフラッシュサイズは320x240ですが、200x150と表示したいので、パラメータ幅200、高さ150の関数を使用します。すべてのブラウザは正常に動作しますが、クロムは正しく動作しません。 200x151(200x151サイズのコードを調べる)と表示されます。どうして?Chromeのスケールが正しく点滅しない

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; 
} 
+3

ところで、SWFObjectを使用してFlashファイルを埋め込む方がよい場合があります。それは汎用性があり、ブラウザとの互換性を十分に考慮します。 – Kos

+3

私は、Pepper FlashがChrome用のデフォルトのFlashプラグインであるようになったので、FlashとChromeで奇妙なことに気づいてきました。これが別のケースかどうか疑問に思う?すでにChrome用にいくつかのFlashプラグインがインストールされている可能性がありますが、Pepper Flashを無効にして、ここに行くことでバグの少ないバージョンを試すことができます:chrome:// plugins –

答えて

1

最初にまず最初に、そのコードはかなり読めなくなり、道路にはいくつかの問題があります。 Kosが言ったように、私は強くお勧めしますswfobjectすべてのブラウザの奇妙さを扱うように、あなたのフラッシュファイルを埋め込むことを強くお勧めします。また、既定値は既に指定されているので、ほとんどのパラメータは必要ありません。これは私のお勧めの方法は、それを行うには、次のようになります。

<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であり、フラッシュがスケールされ、サイズを変更する場合を除いて、Flashムービーには境界線があります(showallは潜在的なオプションの1つではありません)。

フラッシュがどのようにプログラムされているのか正確に何をしようとしているのか分かりませんが、試してみるとparams documentation on Adobe's siteを読んでいます。

関連する問題