2009-11-04 56 views
0

我正在編寫一個在web和AIR上運行的應用程序,爲了避免複製代碼,我想我應該在flex builder上做3種項目:庫,Web和AIR項目。在Flex中,可以確定代碼是在Web還是AIR上運行?

所以我所有的代碼都在庫項目上。

我有accessData.as擴展EventDispatcher來獲取Web服務並將它們作爲事件返回。我打算使用這個類來獲取桌面版本的SQLite數據,但是爲了做到這一點,我需要它根據來源決定獲取數據,取決於它的Web還是AIR。

任何人都知道如何做到這一點?

回答

0

嗯...我剛剛發現了一個辦法

var appName:String = Application.application.name; 

這個工程,因爲網頁版被稱爲「」和桌面版本被稱爲「桌面」

但如果有人有更好的請繼續。

謝謝。

1

您可能會在文檔的系統或功能下找到有用的東西。

3

你真的應該有兩個構建目標,一個用於Web,一個用於AIR。你的代碼的設計方式應該是系統的其他部分不關心實現部分在做什麼,只是它符合某個接口。這樣,每個構建只需替換每個所需平臺的實現代碼。

+0

mmm,這與我在做什麼有什麼不同?你能舉個例子嗎?我剛剛完成了架構,即時完成更改,謝謝:)。 – sergiogx 2009-11-04 22:19:03

+1

你正在試圖弄清楚你在......運行時運行的是什麼。我在說你做了兩個不同的發行版,一個用於AIR,另一個用於Web。因此,當您爲Web構建swf時,不包含AIR的代碼。 – geowa4 2009-11-05 13:28:46

1

創建2個項目Air和Standalone並創建2個條件編譯變量,例如「standalone」和「air」。 (更多here)。

轉到項目 - >屬性 - > Flex編譯器,並添加

對於空氣項目:

-define=CONFIG::standalone,false -define=CONFIG::air,true 

和stanalone:

-define=CONFIG::debugging,true -define=CONFIG::air,false 

在代碼中設置:

CONFIG::standalone { 
    trace("this code will be compiled only when air=false and standalone=true"); 
} 


CONFIG::air { 
    trace("this code will be compiled only when air=true and standalone=false"); 
} 
相關問題