本文是这几天使用Flash Lite的心得,适合有Flash开发经验的开发人员浏览,如果你只是想在手机里使用Flash动画,请跳过本文,而且还要告诉你,现阶段Flash Lite还很不成熟,很可能达不到你的要求。
电脑端软件需求
1、Flash MX 2004 ProfessionalFlash 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”。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")如果在一个帧上有其它的按钮,而且你希望使用方向键进行遍历,就必须在事件处理程序中加上release,上一个例子就要写成:
on(release, keyPress "5")其它要注意的事项
有了上面的知识,你可以尝试开发一个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/" )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 memory如果你非要做一个功能多多的Flash,图形大小是一大障碍,尽量让图形简单一点,少用一些补间,少用一些透明度,少用一些向量图。
5、字体问题
手机里没有电脑里的上百种字体,所以少在字体上打主意,打散字体也不是一个好方法,你会发现手机里的显示根本不是那么回事儿,一定要用的话,转化成PNG图吧,这个它想变的乱七八糟也不可能了。对于动态文本,建议使用“_sans”,并把“使用设备字体”选上。
基本就这么多了,毕竟几天的时间不可能有太多的研究,而且这些也是熬了三个晚上弄出来的,整天睡眠不足,快被MM骂死了。
我写的一个Flash Lite版的大S专用主题:http://bbs.dbsjw.com/dispbbs.asp?boardID=39&ID=115115&page=1