2012-08-23 15 views
5

मैं फ्लैश ऑब्जेक्ट दिखाने के लिए कोड बनाने के लिए नीचे दिए गए फ़ंक्शन का उपयोग करता हूं। मूल फ़्लैश आकार 320x240 है, लेकिन मैं इसे 200x150 के रूप में दिखाना चाहता हूं, इसलिए मैं पैराम चौड़ाई 200, ऊंचाई 150 के साथ फ़ंक्शन का उपयोग करता हूं। सभी ब्राउज़र सही तरीके से काम करते हैं लेकिन क्रोम नहीं करता है। यह इसे 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; 
} 
+3

बीटीडब्ल्यू आप SWFObject का उपयोग करके अपनी फ्लैश फ़ाइल एम्बेड करने के साथ बेहतर हो सकते हैं। यह बहुमुखी है और ब्राउज़र अनुकूलता का ख्याल रखता है। – Kos

+3

मैं फ्लैश और क्रोम के साथ अधिक से अधिक अजीबता देख रहा हूं कि अब मिर्च फ्लैश क्रोम के लिए डिफ़ॉल्ट फ्लैश प्लगइन है। मुझे आश्चर्य है कि यह एक और मामला है? आपके पास क्रोम के लिए पहले से ही कई फ्लैश प्लगइन्स इंस्टॉल हैं, आप मिर्च फ्लैश को अक्षम कर सकते हैं और यहां जाकर कम छोटी गाड़ी का प्रयास कर सकते हैं: क्रोम: // प्लगइन्स –

उत्तर

1

पहली बात यह है कि यह कोड काफी पढ़ा जा सकता है और आप सड़क के नीचे कुछ समस्याएं हैं। कोस की तरह, मैंने दृढ़ता से अनुशंसा की है कि आप अपनी फ्लैश फ़ाइल को एम्बेड करने के लिए 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> 

तो आप बस एक आईडी आपके द्वारा निर्दिष्ट और जावास्क्रिप्ट कोड में सेट के साथ div तत्व जोड़ने की जरूरत है और आप काम हो गया। मुझे एक समस्या का भी जिक्र करना है जो मैं तुरंत देख रहा हूं: 300/240 से चौड़ाई/ऊंचाई अनुपात 1.25 है, और 200/150 का अनुपात 1.333 है, जिसका अर्थ यह है कि जब तक फ्लैश को स्केल करने और आसपास के तत्वों को बदलने के लिए नहीं बनाया जाता है आकार पर, आपके पास फ्लैश मूवी पर सीमाएं होंगी, जिस तरह से इसका मतलब था, जब तक आप स्केल मोड नहीं बदलते (जो showall संभावित विकल्पों में से एक नहीं है)।

मुझे नहीं पता कि फ्लैश प्रोग्राम किया गया था या आप वास्तव में क्या करने की कोशिश कर रहे हैं, लेकिन मैं चीजों को आजमाने और params documentation on Adobe's site पढ़ने के लिए इसे छोड़ दूंगा।

संबंधित मुद्दे