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