2011-02-14 50 views
0

我正在嘗試爲Flex應用程序創建一個動態佈局。如何根據舞臺寬度定義布爾值?

我需要一個布爾值,它是依賴於瀏覽器窗口的總寬度與設置狀態,沿着

if(this.parentApplication.width<950) 
     { 
      currentState = "wide" 
     }else{ 
      currentState = "narrow" 
     } 

不過線的東西,我不能只說明這一點在外匯:腳本標籤,那麼實現它的最佳方式是什麼? enterFrame="application1_enterFrameHandler(event)"的作品,但我不禁感到,這可能是不必要的,可怕的計算密集型(我的應用程序運行速度足夠慢,預計在不久的將來會出現一兩個與flex效率有關的問題)。

感謝

喬希

回答

1

確實在等待調整尺寸會更便宜,更優雅。 in as3 S tage類不再存在,被替換爲s tage。 語法也許不起作用(as3不喜歡匿名函數:))。

你需要在舞臺上可用(check this例如),然後把 類似:

[...when stage is available...] 
stage.addEventListener(Event.RESIZE, onResizeHandler); 

onResizeHandler(null);//calling the method with an null event to force a first check 
[...other instructions...] 

然後

private function onResizeHandler(e:Event):void 
{ 
    currentState = (stage.stageWidth < 950) ? 'wide' : 'narrow'; 
    //or testing a given object's width rather than the stage. 
} 
0

你可以嘗試使用一個事件處理程序。

myListener = new Object(); 
myListener.onResize = function() { 
    currentState = (obj.parentApplication.width<950) ? 'wide' : 'narrow'; 
}; 
Stage.addListener(myListener); 

對不起我的ActionScript是有點生疏,它已經有一段時間,但你可能不得不改變obj.parentApp...,據我所知,在這裏使用this將指向一般是通過傳遞的參數回調函數。

編輯:忘了提到會發生什麼..基本上,當用戶調整電影舞臺時,會觸發匿名函數..比檢查每個幀事件要便宜很多。

相關問題