2010-03-18 35 views
6

我正在使用flex,但actionscript的想法一樣好。actionscript flex,如何將瀏覽器寬度發送到swf本身

flex <s:Application>標記有height="100%" width="100%",所以swf在瀏覽器調整大小時適合瀏覽器。

我的問題是,我有一個<s:Label>,我需要根據瀏覽器的實際/當前大小來定位。

<s:Application height="100%" width="100%"> 
    ..... 
    <s:Label text="hello" x="?" y=">" /> 

</s:Application> 

聽說有可能使用Application.application.width;,但我得到一個編譯錯誤,它不知道那是什麼。

任何想法如何做到這一點。我試圖在瀏覽器調整大小時在瀏覽器中獲取swf的當前大小。

回答

3

至於我可以跟以下應該工作。 Application.application只是與您在基本應用程序中提供的相同。初始化後,綁定應該允許更改大小。

<s:Application height="100%" width="100%"> 
    ..... 
    <s:Label text="hello" x="{width}" y="" /> 

</s:Application> 

編輯:我剛纔檢查和它的工作。要把你的標籤放在舞臺中間,你只需要這樣做就可以了

<s:Application height="100%" width="100%"> 
     ..... 
     <s:Label text="hello" x="{width/2}" y="{height/2}" /> 

</s:Application> 
+0

似乎它也適用於Flex3 :) – 2010-03-18 18:10:40

+0

我刪除了最後一條評論。 3分很好 – adamcodes 2010-03-18 18:11:09

0

你只能知道舞臺大小時元素裏面階段加入,你可以嘗試eventdelegate這樣

 
app.addEventListener(Event.ADDED_TO_STAGE,init); 
private function init(evt:Event):void{ 
    trace(stage.stageWidth); 
    trace(stage.stageHeight); 
} 
+0

雖然不會更新瀏覽器的大小,但僅限於初始大小。 – 2010-03-18 17:54:57

+0

還有一個RESIZE事件,用於像stage.addEventListener(Event.RESIZE,resizeHandler)。 http://www.adobe.com/devnet/flash/articles/liquid_gui_03.html – 2010-03-20 11:00:33

0

在瀏覽器調用JavaScript函數調整大小。從那裏獲得對swf的引用,並調用AS函數來調整標籤大小。通過瀏覽器的寬度/高度。

見例如here

UPDATE:更正:ExternalInterface的去AS給JS。

0

這並不完全清楚你想要做什麼。 xy是位置元素,widthheight是大小元素。如果您要定位標籤,則應該使用top, left, rightbottom而不是xy,如果您希望它的大小作爲父級控件大小。

如果要標籤居中,可以使用horizontalCenterverticalCenter

如果你把它的佈局控件內像panelcanvas只需將其leftright爲0,有父畫布大小。

如果您的標籤根據尺寸始終位於不同的位置,則可以覆蓋updateDisplayList來設置位置。無論您是否將其放在佈局控件中,這都成立。

相關問題