2009-02-10 18 views
10

पर मनमाने ढंग से फ्लैश ऑब्जेक्ट्स wmode बदलना मुझे बाहरी जेएस फ़ाइल से पारदर्शी करने के लिए मनमानी फ्लैश ऑब्जेक्ट्स के wmode को बदलने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि वे Jquery या इसी तरह के libs का उपयोग किए बिना मेनू को छिपाते हैं।पारदर्शी

एफएफ में मैं getElementsByTagName("embed") का उपयोग करता हूं और विशेषता सेट करता हूं। ऐसा लगता है कि यह अच्छा काम कर रहा है।

विशेष रूप से मुझे swfObject लाइब्रेरी द्वारा आईई 7 में सेट किया गया है।

<OBJECT id=mymovie height=400 width=134 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000> 
     <PARAM NAME="_cx" VALUE="3545"> 
     <PARAM NAME="_cy" VALUE="10583"> 
     <PARAM NAME="FlashVars" VALUE=""> 
     <PARAM NAME="Movie" VALUE="imgs/site/tower.swf"> 
     <PARAM NAME="Src" VALUE="imgs/site/tower.swf"> 
     <PARAM NAME="WMode" VALUE="Window"> 
     <PARAM NAME="Play" VALUE="0"> 
     <PARAM NAME="Loop" VALUE="-1"> 
     <PARAM NAME="Quality" VALUE="High"> 
     <PARAM NAME="SAlign" VALUE=""> 
     <PARAM NAME="Menu" VALUE="-1"> 
     <PARAM NAME="Base" VALUE=""> 
     <PARAM NAME="AllowScriptAccess" VALUE=""> 
     <PARAM NAME="Scale" VALUE="ShowAll"> 
     <PARAM NAME="DeviceFont" VALUE="0"> 
     <PARAM NAME="EmbedMovie" VALUE="0"> 
     <PARAM NAME="BGColor" VALUE="FFFFFF"> 
     <PARAM NAME="SWRemote" VALUE=""> 
     <PARAM NAME="MovieData" VALUE=""> 
     <PARAM NAME="SeamlessTabbing" VALUE="1"> 
     <PARAM NAME="Profile" VALUE="0"> 
     <PARAM NAME="ProfileAddress" VALUE=""> 
     <PARAM NAME="ProfilePort" VALUE="0"> 
     <PARAM NAME="AllowNetworking" VALUE="all"> 
     <PARAM NAME="AllowFullScreen" VALUE="false"> 
</OBJECT> 

मैं transparent को wmode सेट और फ्लैश करने के लिए सीमित सहित, लेकिन नहीं सफलता के बिना चल वस्तुओं छिपा नहीं बनाने के लिए हर संभव तरीके से करने की कोशिश की:

    swfObject IE7 में निम्नलिखित कोड बनाता है

  1. OBJECT के लिए खोजें और अपने PARAMwmode से transparent बदलें।
  2. की Object (wmode=transparent)
  3. कॉल object के SetValue समारोह

कोई भी काम करने के लिए लगता है सेट विशेषता। हालांकि wmode बदलना प्रतीत होता है फ्लैश अभी भी अन्य ऑब्जेक्ट्स को उच्च z-index के साथ छुपाता है। मुझे यहां क्या समझ नहीं आ रहा है?

+0

क्या आप थोड़ा और जानकारी दे सकते हैं? क्या आप बस इसे एक बार सेट करने की कोशिश कर रहे हैं, या इसे फिर से चालू करने के लिए? पृष्ठ को पहली बार बनाया गया है जब आप wmode सेट करने में असमर्थ क्यों हैं? – Andrew

उत्तर

2

जब आप फ्लैश को शामिल करने के लिए SWFObject का उपयोग कर रहे हैं, तो 'पैराम्स' नामक एम्बेडेडब्लूएफ विधि में एक पैरामीटर होना चाहिए। आप इसे इसे में एक वस्तु पारित इस तरह:

swfobject.embedSwf(blah,blah,blah, { wmode:'transparent'}); 

more here

+0

उत्तर देने के लिए धन्यवाद। कोड के swfobject भाग पर मेरा कोई नियंत्रण नहीं है। जब मेरा कोड चलाता है ऑब्जेक्ट पहले से ही बनाया गया है। – Nir

+0

यह करने का यह सही तरीका है। आपको वास्तव में देखना चाहिए कि क्या आप उस व्यक्ति को प्राप्त कर सकते हैं जो अतिरिक्त पैरामीटर जोड़ने के लिए swfobject कोड को नियंत्रित करता है। – jacobangel

0

मैं लगभग 100% यकीन है कि आप क्रम में wmode पैरामीटर बदल नहीं सकता हूँ। मेरा मतलब है, आप तकनीकी रूप से कर सकते हैं, लेकिन इसका कोई प्रभाव नहीं पड़ेगा। मैं वास्तव में हैरान हूं कि आपको कोई सफल प्रयास मिला है। फ्लैश प्लेयर संस्करण और ब्राउज़र ने सफलतापूर्वक प्रयास करने का प्रयास किया था?

मैं माफी चाहता मैं अपने बात साबित करने के लिए किसी भी अधिकारी लिंक नहीं मिल रही हूँ, लेकिन मैं आप के बारे में यह बहुत ही दिलचस्प लिंक छोड़ देंगे कैसे wmode काम करता है (खिलाड़ी 10 के लिए अद्यतन):

What does GPU acceleration mean?

चीयर्स,

जुआन

+0

मैं आईई 7 और फ्लैश प्लेयर वी 9ई का उपयोग करता हूं। कुछ कामकाज होना चाहिए। शायद खिलाड़ी को पुनरारंभ करना या फिल्म को पुनः लोड करना ??? किसी भी विचार की सराहना की जाएगी। मैं फँस गया हूँ। – Nir

1

ऐसा नहीं है कि एक फ्लैश फिल्म wmode पैरामीटर को बदलने के लिए पुन: प्रकाशित किए जाने की आवश्यकता है सच नहीं है - इसकी एक मिथक:

http://www.communitymx.com/content/article.cfm?cid=E5141

मेरे पास एक ही मेनू समस्या है, और मुझे जावास्क्रिप्ट द्वारा बुलाए जाने वाले किसी भी फ़्लैश ऑब्जेक्ट को wmode पैरामीटर जोड़ने के लिए कुछ कोड चाहिए।

मुझे लगता है कि मूल पोस्ट इस से संबंधित है, लेकिन मुझे यकीन नहीं है कि कहां से शुरू करना है और अधिक जानकारी चाहिए।

10

मैं इस छोटे चाल के साथ सफल किया गया है:

$("embed").attr("wmode", "opaque").wrap('<div>'); 

इसे प्रभावी ढंग से फ्लैश वस्तु redraws, मेरे लिए काम किया।

+0

मुझे यकीन नहीं है कि यह "सर्वोत्तम" विधि है लेकिन यह मेरे लिए काम करता है। धन्यवाद। –

+0

क्या एक चैंपियन! – ifightcrime

3

सामान्य रूप से सर्क का समाधान सही है। यहां एक गैर-jQuery संस्करण है, जो आईई, एफएफ और क्रोम में काम करता है:

var embed = document.getElementsByTagName('embed'); 
for(var i = 0; i < embed.length; i++){ 
    embed[i].setAttribute('wmode','opaque'); 
} 
// FF does a "live" array when working directly with elements, 
// so "els" changes as we add/remove elements; to avoid problems 
// with indexing, copy to a temporary array 
var els = document.getElementsByTagName('object'); 
var obj = []; 
for(var i = 0; i < els.length; i++){ 
    obj[i] = els[i]; 
} 
for(var i = 0; i < obj.length; i++){ 
    var param = document.createElement('param'); 
    param.setAttribute('name','wmode'); 
    param.setAttribute('value','opaque'); 
    obj[i].appendChild(param); 

    var wrapper = document.createElement('div'); 
    obj[i].parentNode.appendChild(wrapper); 

    if(obj[i].outerHTML){ 
     // IE 
     var html = obj[i].outerHTML; 
     obj[i].parentNode.removeChild(obj[i]); 
     wrapper.innerHTML = html; 
    }else{ 
     // ff/chrome 
     obj[i].parentNode.removeChild(obj[i]); 
     wrapper.appendChild(obj[i]); 
    } 
} 
+0

मेरा दिन बचाओ !!!!!! – Shawn

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