本文是這幾天使用Flash Lite的心得,適合有Flash開發經驗的開發人員瀏覽,如果你只是想在手機里使用Flash動畫,請跳過本文,而且還要告訴你,現階段Flash Lite還很不成熟,很可能達不到你的要求。
電腦端軟件需求
1、Flash MX 2004 Professional2、FlashLite 1.1 Content Development Kits
Flash MX 2004不用多說,既然做過Flash開發,電腦里必然有這個東西。
CDK的安裝有點麻煩,最便捷的方法是把Flash的版本升級到7.2,7.2的升級包可以到Macromedia的網站上免費下載,下載地址:http://download.macromedia.com/pub/flash/updates/mx2004/update_fmx2004_7.2_cn.exe。
手機端軟件需求
1、FlashLite Player 1.1這個軟件有Symbian和Smartphone兩個版本,我們的大S當然選擇Symbian版本的了。說句題外話,我看過Smartphone播放Flash的效果,比Symbian好了太多,這一點上,Symbian輸給了MS。如果你還沒有這個軟件,不要急,往下看。
你可以把你的手機型號和IMEI發郵件到mobiledeveloper@macromedia.com,就可以收到FlashLite Player。不過最近Macromeida好象不再提供FlashLite Player給Developer測試了,不過肯定還會開放,時間我也不知道,你可以發個郵件實驗一下,記住,要寫E文啊,中文估計他們看不懂。
如果這一招不靈,你還一定想要,可以去Macromedia的網上商店購買,價格是USD10。
新建Flash文檔
通常,我們可以從模版開始制作,Flash MX 2004雖然內建了一些移動設備的模版,不過不包括大S,你可以去http://www.flash-lite.de/downloads.html下載大S的模版。
當然,你也可以從新建常規Flash文檔開始,然后做下面的一些設置:
1、把大小設置為176×208,大S的屏幕雖然有176×220,但是上面12個像素的信號和電量不能覆蓋。
2、把幀頻設置為20fps,當然你可以設置為別的,不過這個是常規的設置。
3、把發布版本設置為Flash Lite 1.1,這個是必須的,否則發布的文件手機無法打開,你也可以在發布時再做設置,但先設置的好處是Flash Lite 1.1不支持的功能在程序中會灰體顯示,免的做無用功。
動作
Flash Lite 1.1只保證能夠使用Flash 4的Action,官方說是因為手機的運算速度不夠快,我看未必,因為他們還在繼續開發新版本,如果他們在隨后的版本中支持了更多的Action,豈不是打自己的耳光?
升級后的Flash里多了一堆Flash Lite 1.1的Action,你可以自己逐個實驗,常用的有這么幾個:
fscommand2( "GetDeviceID" , "id" ); - 取得移動設備的ID,在大S中返回“Siemens SX1”。fscommand2( "FullScreen" , boolean ); - 是否全屏播放。
fscommand2( "GetDateYear" ); - 得到系統年份,類似的還有月、日、時、分、秒。
fscommand2( "SetSoftkeys" , left , right ); - 驅動軟鍵,這個在后面會詳細說明。
fscommand2( "Quit" ); - 退出程序。
Flash Lite 1.1支持的所有Action指令和屬性,可以參考CDK里面的Macromedia Flash Lite 1.1 Authoring Guidelines。
輸入接口和事件處理
手機上沒有鍵盤鼠標,所以在電腦上可以互交的方法不能在手機上使用,大S只支持數字鍵0-9、*、#、四個方向鍵、確定鍵和左右軟鍵。
方向鍵分別表示為Left、Right、Up、Down,確定鍵表示為Enter,左右軟鍵默認不能驅動,如果要使用,必須在主時間軸加上fscommand2( "SetSoftkeys", left, right ),其中左軟鍵為pageUp,右軟鍵為pageDown。
在按鈕的事件處理時,你可以使用“on (keyPress "x")”方法,例如你要在按下5鍵時啟動照相機,你可以寫:
on (keyPress "5"){
getURL("file:///Z:/System/Apps/Camera/Camera.app");
}
如果在一個幀上有其它的按鈕,而且你希望使用方向鍵進行遍歷,就必須在事件處理程序中加上release,上一個例子就要寫成:
on(release, keyPress "5"){
getURL("file:///Z:/System/Apps/Camera/Camera.app");
}
其它要注意的事項
有了上面的知識,你可以嘗試開發一個Flash Lite版的Flash了,不過在開發過程中,注意以下幾點,這些都是我走過的彎路,希望你不要再走一遍。
1、路徑問題
Flash 5以后我們就不在用/和tellTarget了,但是Flash Lite 1.1不支持點語法,所以你必須拾起被拋棄許久的/和tellTarget。
例如在場景里有一個影片剪輯A,A中有一個影片剪輯B,如果你要在主時間軸上指定B的時間軸,我們使用“_root.A.B”,現在不行了,你要使用“/A/B”。同樣,你要在B的時間軸上指定主時間軸,也不能用“_parent._parent”,而要用“../../”。
接上面的例子,在A中有一個變量AA,B中有一個變量BB,如果你要給BB變量賦值為5,不能用“_root.A.B.BB = 5",而要寫成:
tellTarget ( "/A/B/" ){
BB=5;
}
2、循環問題
不用擔心,雖然Flash Lite 1.1夠弱智,但是你還是可以使用for和while,只有一點,Flash Lite 1.1不認識var,所以不要這樣寫:
for ( var i = 0; i < 10; i++){
語句;
}
3、數組問題
很遺憾,Flash Lite 1.1不支持數組,沒辦法,多用點if和for吧,Flash MX 2004里還沒有指針呢,我們不也模擬出來了?小小數組模擬起來自然不成問題。
4、圖片問題
Flash Lite 1.1支持的最大圖片大概是50K,這個數據我不確定,反正當我使用的圖片超過50K后報錯:“Problem with content: 6”,錯誤6意思是說圖片太大了,還有其它的一些錯誤,一并寫下來:
1:Out of memory2:Stack limit reached
3:Corrupt SWF data
4:ActionScript stuck
5:Infinite AS loop
6:Bad JPEG data
7:Bad sound data
8:Cannot find host
9:ActionScript error
10:URL too long
如果你非要做一個功能多多的Flash,圖形大小是一大障礙,盡量讓圖形簡單一點,少用一些補間,少用一些透明度,少用一些向量圖。
5、字體問題
手機里沒有電腦里的上百種字體,所以少在字體上打主意,打散字體也不是一個好方法,你會發現手機里的顯示根本不是那么回事兒,一定要用的話,轉化成PNG圖吧,這個它想變的亂七八糟也不可能了。對于動態文本,建議使用“_sans”,并把“使用設備字體”選上。
基本就這么多了,畢竟幾天的時間不可能有太多的研究,而且這些也是熬了三個晚上弄出來的,整天睡眠不足,快被MM罵死了。
我寫的一個Flash Lite版的大S專用主題:http://bbs.dbsjw.com/dispbbs.asp?boardID=39&ID=115115&page=1