欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

展望2006年,Flash未來未有來!

javascript 夜阑小雨 1044℃ 0评论

經過2005年的時間,做過大大小小不同的Flash應用,當我忙於為2006年第一個重頭而大型的Ajax專案做準備、文檔和可行性研究等時,我不禁不斷問自己,Flash的未來在哪裡?Flash的優勢在哪裡?Flash的重要性在哪裡?

我的角色

先從自己的角色說起,我平日工作是做Flash,這是人所共知的,但不只是Flash這麼簡單,我可是一個諮詢、協調和開發的角色,首先因應客戶的問題和預算,提供硬體上和軟體上的建議,例如要用什麼Server?什麼OS?Linux/Windows?什麼Server-side Program和Database等。

在Client-side/Browser/Front End上,我是一個UI Designer,我非常關心怎樣給予使用者最好體驗,包括:

  • 快速下載
  • 簡易操作
  • 界面流暢,慢的電腦也跑得順
  • 不佔用過多CPU Power
  • Cross Browser和Cross Platform

同時我也是一個Information Architect,思考怎樣將Server傳來的數據(Data)轉化為清楚、有用、條理分明的資料(Information/Content),不單只在展示(Presentation)上滿足使用者,更要協助使用者可以將資料再運用,例如:選取Copy-n-Paste、列印、另存、Bookmark、Forward Link等。同時,我更為應用系統研究合適的操作步驟,包括每個操作的Screen Flow,怎樣協助使用者操作、找出錯誤、處理Back Button,提交資料到Server前優化工作等。

到了Server-side,我變成一個中間人角色,跟Programmer溝通,告訴他們需要什麼API供給Front End使用。最簡單層次也要跟很多不懂Flash的Programmer溝通,告訴他們怎樣跟Flash作LoadVars。這個中間人角色在開發過程中,變成了一個System Analyst,因為我要思考的既是怎樣分工,也要考慮到應用系統將來維護和擴展性。分工上簡單地說是怎樣去將應用系統MVC化,讓美工只專注在設計上。維護和擴展性,要考慮到將來增加功能、Localization多語言版本等問題、開放API等Web 2.0的東西。因此,Front End我要周旋於HTML, CSS, JavaScript, XML, XSLT, Flash的取捨,Back End要想2-Tier還是3-Tier,SOA等等問題。這也是我諮詢一部分,給客戶建議,告訴Programmer該做什麼。

因為這個背景,所以我對於Front End技術的選擇非常關心,過去是HTML vs Flash?現在是AJAX vs Flash?Adobe vs M$ vs Open Source?因為HTML對Flash取捨,已經影響了我關心的「使用者最好體驗」,就是剛才提到幾點,同時它也影響了Server架構,例如用Flash是否可以直接連Web Services產生一個簡單2-Tier的SOA?

我的專案

我所有專案,99%都有Flash,基本上所有Flash Spectrum東西我都有做過。我將範圍收窄在網上,即Browser裡東西。Browser裡東西,除了新聞純文字資訊性的網站絕對不需要用Flash外(看新聞影片Video除外),我看到要用Flash地方,其實分為四種:自我介紹的中小企公司網站、電影娛樂產品宣傳的行銷性網站、網上商貿資料搜索性網站、Web Based Application(即純粹解決商業問題的應用程式,由過去C/S搬上B/S)。

公司網站,考慮因素很低,使用者不會長時間留在網站裡,沒有什麼操作,內容更新規模低至少,因此運用HTML或是Flash,基本上由客戶和價錢決定。其實這類網站很依靠Search Engine帶來瀏覽者,純Flash網站怎辦?沒有我提醒,客戶其實很難察覺這大問題。

行銷性網站,一定是Flash,因為多姿多彩,影音娛樂聲色俱全是這些網站必需的,目前有的技術,唯有Flash才能勝任。行銷性網站不會長時間在線,將來維護問題需要很少。

分析運用Flash的優劣

後兩者,就是我最關心的所在。網上商貿資料搜索性網站(下簡稱「資搜網」),除了一般網上購物外,還包括資料搜索性,例如地圖上增值服務、找餐廳、訂酒店機票等服務。這類網站,對於我關心的「使用者最好體驗」最為重要,因為使用者除了要經常使用外,還要對資料再運用。一個用戶體驗為主的網站,如果這方面做得不好,直接是損失商機,例如放棄Check out等。雖然Macromedia的口號是體驗攸關(Experience Matters),不過,我看來,Flash正為這類網站提供最差體驗。

一、 失去Back Button和Bookmark/Forward Link能力
有些基本Flash缺點,前人都已經說了(Flash: 99% Bad),「資搜網」對Back Button和Bookmark/Forward Link非常重要。以HTML一頁為單位的「資搜網」,可以用GET Method來查詢,搜索的參數都在網址上,既可以按Back Button就再搜尋(大部分使用者,對錯誤操作仍然是習慣按Back Button),也可以Bookmark和Forward Link,試比較HTML的Flickr和Flash的Fotologue.jp,後者網站怎樣告訴朋友我喜歡的一張相片?
FlashNoLink1.jpg
FlashNoLink2.jpg
雖然這些問題(Ajax也有面對)Flash有解決方法(參考我的《AS2與RIA》),但絕對是痛苦開發過程。

二、 不能資料再運用
資料再運用上,Flash網頁難以讓使用者儲存和列印,雖然Flash提供了PrintJob API,可以弄一個Button供使用者列印,不過一天Flash寄生在Browser裡,一天使用者直覺上會按Browser裡Menu Bar上的Print(難怪Adobe要攪她那個Flash+PDF+HTML+CSS的Apollo,努力跳出Browser框框)。Ajax也有難以讓使用者儲存問題,因為網頁內容是動態產生。

三、 文本處理能力不快不方便
Flash一直強調自己展示能力,可惜這又正正曝露出它天生致命點,文本(Text)處理能力不快不方便,我不會說它不強,它可以Embed Font,Flash 8更可以控制Leading Kerning等,可惜它很慢,而且不方便使用者!文字根本是HTML天生原素,在Browser裡可以自由快速地滾動瀏覽,自由選取,更可以隨便讓使用者控制字體大小。在美工主導下的Flash字體,非常細小難於閱讀,大量文字滾動起來又慢又吃力(我以前批評過Flash Paper)。另一方面,HTML文字可以隨Browser大小自由換行,Flash裡又花費大量功夫。Localization上,HTML有很多方法,例如套用不同Template代表不同語言版本等,文字因為儲存在純文字檔案,可以給翻譯容易處理。在Flash裡,又是另一個使人頭痛問題,抽出來放在XML裡?Dynamic TextField會失去美麗字體!結果又要花費美工複製多個FLA語言版本,將來維護上又是一個極大煩惱。

四、 文字/圖文列表處理能力弱
在「資搜網」上,經常要顯示大量文字/圖文夾雜搜尋資料時:
FlashNotSupportTable1.gif
FlashNotSupportTable2.gif
FlashNotSupportTable3.gif
Flash就顯得軟弱無力,用DataGrid?它慢得可怕,又非常難Hack,CellRenderer不是一般開發者懂得。對於這樣資料,要先攪清楚它們是Tabular Data還是只需要Tabular Format,前者需要一個DataGrid形式顯示,因為DataGrid可以用Columns排序、做分頁等。Tabular Format只不過在HTML上,用Table排列出,在Flash裡用duplicateMovieClip或者Flex的mx:Repeater。HTML Table列出,ScrollBar由Browser負責,快速而方便;在Flash裡則要自製ScrollBar,慢和不方便。

五、自製界面困擾使用者
談到自製ScrollBar,Jakob Nielsen有文章指出Flash自製ScrollBar的問題。Flash界面不單是ScrollBar問題。它更引申,因為Flash非常自由,美工可以自由發揮,變成界面可以有一些新奇古怪的操作方法,使用者面對不是他們熟悉的OS操作方法,就有猶疑。難道我們可以坐在使用者旁邊教他們用,還是提供使用者手冊給他們看?「資搜網」用戶是廣大的,根本沒有可能教他們用,因此,簡單而平常界面才最重要。

小結
「資搜網」最適合一頁頁的HTML來顯示,Ajax/Flash只適合作搜索操作步驟上改善使用者體驗,例如提示錯誤,快速跟Server驗證等。Refreshless Page是盲目無意義的追求!

Flash沒有幫助開發者開發RIA
應用開發是很多ISV和開發者日常的工作,因為商業公司有很多數據化後業務操作,不是一般盒裝軟體能夠滿足,因此需要這類公司或開發者為他們訂製或客製。這類應用程式簡單地只是一個資料輸入,數據儲存,資料輸出的過程,因此所謂應用程式只不過是一個輸入界面Form加一個Database。以前是Client-Server(C/S)架構,現在只不過搬到Browser裡。

一、劣質界面組件
輸入界面包括TextInput, Button, Radio Button, CheckBox, List, ComboBox等,就是Flash裡v2 Component,可惜v2 Component非常慢,Buggy和檔案大,缺乏優質界面組件一直是Flash開發應用程式第一大問題。Flex組件好很多,可惜昂貴價錢使大部分開發者望門輕嘆。雖然Flex Builder 2和AS3組件可以改善這問題,可惜待推出至Flash Player 8.5普及,還有一段長時間,遠水不能救近火。不過,這些基本界面組件,HTML已經有,由於它們是HTML天生原素,在Browser裡支援十分好,反應快,又支援Tab Focus和鍵盤。

二、兩邊不討好界面製作過程
在Flash Timeline以Drag-n-Drop組件的方式製作界面,還是在Dreamweaver裡也是以視覺化的方式製作界面,不過同樣容易地以純文字方式去調節來得方便和快速?(Flex Builder也是視覺化+文字化,不過高貴Flex根本不是一般開發者用)。程式員怎樣選擇?對於美工,他們想自訂界面外觀,Flash v2 Component/Flex的方式,他們可以參與多深入呢?HTML+CSS方式修改是否最簡單快捷方便?

當重要界面組件被商業企業Adobe以謀利方式控制著時,我們是否應該考慮更討好,免費、標準和廣大Browser支持的HTML Form Element呢?

三、難以容入的團隊開發
FLA難以整合到CVS,MXML只有乾看,沒有錢用,沒有文字化Flash應用開發方式,不能純用自己喜歡的Editor開發,SWF Compiler遙遙無期,MTASC自我放棄。Flash應用開發成本比HTML貴很多,單是等Flash MMC Compile的時間已經浪費了一個人生(見用MTASC可以生仔)。

四、根本沒有所謂桌面軟體操作經驗和需要
Flash喜歡說可以有桌面軟體操作經驗的RIA,即是有Drap-n-Drop。大部分B/S應用,剛才已經指出了,是一個資料輸入的Form而已,有需要什麼創新的Drag-n-Drop操作方法嗎?

五、應用程式需要頁面無刷新
所有應用程式開發者都很怕使用者按Back Button,因為容易產生數據不完整錯誤,也討厭Reload這Button,容易產生數據重覆問題。從C/S走過來,應用程式從來不需要Back和Reload Button。因此頁面無刷新是對開發者很重要功能,也是Flash當初賣點。

六、Cross Platform和Cross Browser
應用程式以Web Based來部署,B/S廣泛代替C/S,原因是Internet/Intranet和Browser是一個廣泛和容易部署的應用程式平台。不過,因為廣泛,所以有Cross Platform和Cross Browser問題,Flash冒起正正因為它真的可以Write Once, Run Anywhere。

第五、六點不是Flash缺點,而是提出來因為這兩個Flash獨特優點,正正被Ajax代替。第五、六點其實是Web Based Application開發者很需要,因此當Ajax出現時,立即引起轟動!為什麼他們卻無視Flash存在?Ajax冒出,除了以上技術上優勢外,還有多家著名Web 2.0概念的網站都是用Ajax,變成了Web 2.0概念中都包含Ajax,可憐Flash要拚命躋身入去(Mike ChambersKevin Lynch說法),說服世人Flash也是Web 2.0一分子。

小結
HTML Form Element和HTML文字/圖文列表處理能力,純文字開發過程、XMLHttpRequest提供無刷新數據交換,Cross Platform和Cross Browser,所有Web Based Application開發需要的東西,Ajax都比Flash好,Flash有何優勢,難道以為那些Expressiveness和Transitions Effect來騙騙門外漢?應用程式貴乎實用而非花巧,當使用者每天都使用程式時,還要他們浪費時間等Flash用Transitions Effect將一張Form旋轉放大Fade In出來嗎?

邪惡的Adobe

封閉收費 vs 公開免費
當完成合併那天的FAQ提到要將Flash Player和PDF合併,Flash社群震撼是如何大!這要Adobe方面漏夜修正FAQ字眼,Mike Chambers等走出來澄清。我想人們應該要明白Flash無論多de facto standard都好,始終是控制在一家牟利的商業企業裡,人家要給你劣質Component,賣你1.2萬美元Flex,你是沒辦法的。同樣道理,因為公開、免費、標準的技術大湊合Ajax會被人重視,原因在此(見Open Source Action Items中Aral Balkan意見)。開發者不可以將自己將來、前途和錢途寄託在單一公司、單一封閉技術裡。

Flash是二線產品
我對Adobe吞併Macromedia感覺,如香港回歸大陸一樣,雖然有強勁經濟靠山,但香港獨特國際優勢會逐步被大陸化而變成中國一個沿海普通城市。Flash現在只不過淪為Adobe裡一個二線產品,Adobe可以繼續放主力在她賺錢的Documentation和PDF業務、Flash和那可能賺大錢的Flash Mobile遠景,Adobe會重視嗎(見Adobe Faces Tough Choices)?香港不再生金蛋,Flash也不再閃爍!

Macromedia精神不再
況且,我從來不認為Flash Mobile會成功(1,2)。Macromedia精神和Vision究竟有多少能夠再延續在Adobe裡?雖然有五位Macromedia高層入了Adobe管理層,但有實權嗎?Stephen A. Elop所謂President, Worldwide Field Operations,看來有虛名沒有實權,新安插出來職位?Adobe雖然接收了Macromedia的員工,但多少會長期留下,我知道一些高層合併過程中已經離開,Flash開發團隊的精英會否一年半載後意興闌珊而離開或另起爐灶?(如Macromedia買了RoboHelp後,RoboHelp員工拉隊離開1,2

Adobe得不到Macromedia開發社團信任,雖然她已經發公開信保證,但各MMUG將準備以行動證明拒絕Adobe化決心(見LondonMMUGCPMMUG和香港MMUG)。

最後總結
Flash最適合多媒體的行銷網站運用,其他方面,它正是腹背受敵中,視覺實驗可以玩Processing,應用程式可以考慮Ajax。我建議所有熱愛Flash的RIA Developer,2006年應該將目光多投向Ajax,因為同樣是ECMAScript,同樣是XML Parsing,非常容易學。我們Flash Developer有5年時間,從過去錯誤經驗成長,如果將這些經驗知識運用到Ajax上,一定能找到我們自己的優勢的。

最後,我不是今天的我打倒昨天的我,我曾經對Ajax作出批判,但了解過我的工作背景:我是由鑽研DHTML討厭Flash到開始轉玩Flash的;長期關心本站的朋友都知道,我是一個關心Client-side技術發展的人(1,2,3,4)。所以,任何對改善使用者經驗、改善開發者工作的有價值技術,我們都不能放過。

转载请注明:夜阑小雨 » 展望2006年,Flash未來未有來!

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址