2011-08-23 31 views
2

Flashbuilder產生在博客上存儲(通過JavaScript)一個html:如何從swfobject訪問bgcolor?

... 
var swfVersionStr = "10.0.0"; 
     <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. --> 
     var xiSwfUrlStr = "playerProductInstall.swf"; 
     var flashvars = {}; 
     var params = {}; 
     params.quality = "high"; 
     params.bgcolor = "#ff0000"; 
     params.allowscriptaccess = "sameDomain"; 
     params.allowfullscreen = "true"; 
... 

我怎樣才能改變這種狀況的bgcolor動態地AS3? 如何訪問此flashvar params.bgcolor?

由於

+0

有什麼意義?只需在Flash中繪製另一個背景。順便說一句:bgcolor是一個參數,而不是一個flashvar,所以我不認爲你可以直接訪問它。 – RIAstar

+0

調整瀏覽器窗口的大小時很重要。在某些情況下,我需要黑色,有時候需要白色背景。繪製另一個背景並不能解決這個問題 – algro

+1

你應該把它放在你的問題中。 @richarddolsson爲您提供了答案的一部分。現在你可以使用ExternalInterface讓JavaScript告訴Flash使用他的技術繪製哪種顏色。 – RIAstar

回答

2
//as3 
externalInterface.call("myFuction", "#FF0000"); 

//javascript 
var myClr; 
function myFuction(myVal) 
{ 
    myClr = myVal; 
    window.action = actionFunc(); 
} 
window.action = actionFunc(); 
function actionFunc() 
{ 
    var flashvars = {}; 
    var params = {}; 
    var attributes = {}; 
    params.bgcolor = myClr; 
    flashvars.mp3="mast.mp3"; 
    var so = new swfobject.embedSWF("player_slim.swf", "myContent", "300", "120", "9.0.0",true, flashvars, params, attributes); 
    so.write("myContent");  
} 

<div id="myContent"> 
</div> 

試試這種方法。它的工作。

3

的SWF文件具有嵌入在其中的背景顏色屬性(如幀速率,默認尺寸等c)中,但嵌入的環境中,這通常是HTML,可以在嵌入時覆蓋所有的這些設置。另外,它們中的一些可以在運行時被ActionScript覆蓋。但是,SWF背景顏色不屬於最後一個類別。

相反,您可以使用圖形API在任何東西后面繪製矩形,例如,通過執行以下操作:

root.graphics.beginFill(0xffcc00); // Replace with your color 
root.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 

如果您的SWF將調整,你應該把上面的兩行的事件處理程序,並補充說,作爲一名聽衆在舞臺上Event.RESIZE,像這樣的危險:

function handleStageResize(ev : Event) : void 
{ 
    root.graphics.clear(); 
    root.graphics.beginFill(0xffcc00); // Replace with your color 
    root.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 
} 

// Add the listener 
stage.addEventListener(Event.RESIZE, handleStageResize); 

還存在一些問題,某些舊的瀏覽器在您的ActionScript的主要切入點將舞臺的尺寸之前被調用已正確設置(這意味着stage.stageWidthstage.stageHeight都返回0)當心所以你可能想在第一次調用上述繪圖代碼之前等待一幀。

這種方法大大優於使用透明窗口模式和修改背景後面的SWF(在HTML),因爲使用wmode=transparent有時會引起奇數的問題(在某些瀏覽器例如鍵盤輸入的錯誤)​​,並會降低性能,往往顯著。

如果你確實需要透明的wmode,例如透明的wmode,當它後面有HTML元素時需要可見。