【天堂论坛】玩机到天堂 买机找海洋诺基亚……科技以人为本 → Flash Lite开发人员入门教程
查看完整版本:Flash Lite开发人员入门教程
2006/9/19 12:23:38

    本文是这几天使用Flash Lite的心得,适合有Flash开发经验的开发人员浏览,如果你只是想在手机里使用Flash动画,请跳过本文,而且还要告诉你,现阶段Flash Lite还很不成熟,很可能达不到你的要求。

电脑端软件需求

1、Flash MX 2004 Professional
2、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 memory
2: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

Powered by BBSXP 2007 ACCESS © 1998-2024
Processed in 0.02 second(s)