2009-11-09 30 views
3

早晨堆放器!所以我今天的問題不是處理任何代碼,而是如何從一開始就以正確的方式來處理這個問題。我有一個視頻播放器構建爲靜態大小(最大爲800x600),我必須在每次需要它的大小不同時重新編碼。如何建立一個動態調整大小的Flash播放器

在不久的將來我需要做的事情是動態調整自身的大小,並根據它將從HTML或XML接收到的1個寬度變量調整它內部的所有元素。

現在我有2種方式去了解這一點:

  • 開始與可能的最小尺寸和調整向上,但我不能確定如何將Flash影片實際上會向上擴展爲馬上。
  • 或2,從可能的最大尺寸開始(在本例中爲800x600),並將所有尺寸縮小。

第1步,我認爲似乎是更好的方式去這個(阿拉YouTube風格),但步驟2也似乎可能是更簡單的方法?我的一位朋友提到,我應該選擇較大的尺寸,並在每個班級調整元素大小,然後修復左上角。然而,爲了讓玩家適合在網站上的特定div列內,博客無論他說什麼,都必須有HTML/CSS這一方面......這意味着包含調整大小的Flash Player的div將不得不掩蓋區域Flash電影中不會顯示的內容?可以將800x600的閃光電影放入小於800像素寬的div中嗎?並用另一個div來掩蓋它?

不管怎麼說,我的使命是要能夠有一個動態調整的球員像這樣:

alt text

的思考?建議?在我開始之前的最佳做法?

回答

3

你對這個方式太複雜了。你試圖完成的是一個簡單的全寬和高度佈局,與左上角對齊,沒有縮放。首先,你需要確切地告訴閃光,與這兩條線的框架之一的頂部或在構造你的文檔類:

stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.align = StageAlign.TOP_LEFT; 

,那麼你只需要使用寬度來定位你的顯示對象,並高度重視你傳入你的瑞士法郎。由於你真的試圖使它不依賴於維度,所以從大開始或從小開始並沒有什麼關係。您將不得不通過各種維度組合來觸發代碼中的佈局決策。

3

添加到greg的響應中,查看舞臺對象的「resize」事件。然後,stage.stageWidth和stage.stageHeight會爲您提供swf的實際高度和寬度,因此您可以相應地定位和縮放資產。從文檔類構造函數執行此操作的典型方法是:

public function Main() { 
    addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
} 

function addedToStage(e:Event) { 
    // clean up our listeners 
    removeEventListener(Event.ADDED_TO_STAGE, addedToStage); 

    stage.scaleMode = StageScaleMode.NO_SCALE; 
    stage.align = StageAlign.TOP_LEFT; 
    stage.addEventListener(Event.RESIZE, resize); 

    // force a resize event 
    dispatchEvent(new Event(Event.RESIZE)); 
} 

function resize(e:Event) { 
    var W:uint = stage.stageWidth; 
    var H:uint = stage.stageHeight; 
    mysprite1.x = W - mysprite.width; 
    mysprite2.height = H; 
    //etc... 
} 
+0

您在addedToStage函數中有錯誤;你正在趕上ADDED_TO_STAGE事件,而不是RESIZE事件... – kkyy 2009-11-10 08:39:05

+0

謝謝你的頭:) – Cay 2009-11-10 08:47:55

+0

嘿thx,是啊我試試這:)我確信我的下一個stackoverflow問題將與我嘗試的元素相關調整大小和重新定位 – 2009-11-10 18:44:37