2014年2月14日 星期五

Zinc 全螢幕功能需要注意的地方

Flash 可以輸出成為執行檔,不依靠 flash player 直接在作業系統中執行。另一種角度來說,就像是把自己寫的程式和 flash player 包在一起。成為執行檔可以打開一些限制,像是能夠同時讀取本機與網路上的資料,或是執行系統命令。不過本來就沒有的寫入檔案功能,並不會因此冒出來。

全螢幕的功能,就是變成執行檔可以使用的功能之一。

在 MDM Zinc 裡,猜想是因為帶入的多視窗的概念,導致既有的方法失效,需要用它所提供 Forms 的方法來達到視窗的最大化、最小化、還原。最大化和全螢幕不同,全螢幕的狀態會把系統工具列、 Dock 等也一併隱藏。

使用 Zinc 開發的專案,很早就發現一個狀況,就是全螢幕的功能正常,但是取消全螢幕的功能卻時好時壞,系統工具列在取消的同時出現,但是程式並沒有回到原來視窗的狀態,還是維持全螢幕的大小,只是上頭多出現了系統工具列。一直到最近才找到時間去研究這個問題。

2014年2月9日 星期日

使用 Joda-Time 取得各時區的時間

話說前陣子研究 Joda-time 來取得各個時區的時間後,就把它應用在專案裡面。不過幾天專案發現出問題,讓我發現它的一個小小的問題。

問題的原因發生在把資料庫的時間轉換成我希望的時區,所以我寫了下面這個函數…
public Date getLocaleTime(Date date, String TimeZoneID) {
  DateTime time;
  if (date == null)
    time = new DateTime(DateTimeZone.forID(TimeZoneID));
  else 
    time = new DateTime(date, DateTimeZone.forID(TimeZoneID));
  return time.toLocalDateTime().toDate();
}

乍看之下沒有什麼問題,不過當選擇到某些特定的時區的時候就會出狀況,說 Joda-Time 不支援這個 TimeZone ID。

2014年2月7日 星期五

使用 MDM Zinc 遇到的兩個問題

MDM Zinc 是一個能夠把 Flash 發佈檔 swf 打包成應用程式,能在 windows, mac, linux  上直接執行,除此之前,藉由呼叫它所提供的函數庫,能讓 Flash 程式具有如同一般應用程式的能力,達到像是寫入檔案、取得網卡 Mac Address…等原本 Flash 不允許作的事情。第一次和它接觸好像是在五,六年前,還是 2.0 的版本,為了作一個單機、展示用的行銷光碟。

幾個月後,因緣之下又接到類似的需求,為了要讓 Flash 能夠寫入檔案,我又再一次選擇了這個工具,只不過不同的是,這次 4.0 的版本反而讓我吃了不少苦頭,花了兩三個星期的工夫才找到問題答案。在此作一下記錄,也許哪個遇到一樣問題的人,有緣看到這篇文章能夠少繞一些路。

這次發佈程式的平台是 mac,使用的是 ActionScript 2 的語法。遇到的問題分別是「文字輸入框裡無法出現游標,退位鍵在刪除一個字後就卡住了」,另一個問題則是「當程式打包成安裝檔,順利安裝到 mac 之後,不管多少支程式,在 launchpad 裡都只有一支程式的圖示」。