2007年发表于IT168 链接地址:http://publish.it168.com/2007/0827/20070827007101.shtml
前段时间,懒羊买了一款Nokia 6681的新手机,回来后就装了一堆软件把玩。后来听朋友说这款手机可以播放Flash动画,于是就从电脑上拷贝了一些动画塞进了手机存储卡,可惜的是总是无法打开。懒羊只好去问大鸟,大鸟听说了情况之后,笑着道:“你这只笨羊,手机上要想播放动画得装Flash lite播放软件”。于是大鸟给懒羊讲了一些Flash lite的知识,后来懒羊不仅可以让懒羊的手机可以播放Flash动画,而且自己还做了一个Flash应用小程序放到了手机中使用。当然了,懒羊也不会吃独食的啦,大家也想做的话,那就Let's Go吧!
![]() |
懒羊的Nokia 6681 |
一、什么是Flash Lite?
Flash Lite 是专为移动电话和消费性电子设备开发的 Flash 技术。其实就与电脑中的Flash一样,它包括两方面:一方面是手机Flash的应用,另一方面则是手机Flash的开发与制作。对于一般的朋友来说,应用就足够了,在网上down点Flash到手机上播放、娱乐,而这么做的前提是你只需要知道如何让你的手机能够播放Flash就可以了。而如果你想在手机上播放自己的Flash,那就得学一学Flash lite的制作,如果你对Flash的制作很熟悉的话,那么这一切你会发现是如此的简单。
Flash Lite当前有主要有两大版本:Flash Lite 1.x 和 Flash Lite 2.x,值得注意的是,并不是所有手机都支持这两个版本。如果你对你的手机是否不了解的话,您可以通过Adobe官方查询页面(http://www.adobe.com/mobile/supported_devices/handsets.html)进行查询。当然还有一些手机支持Flash player,比如Nokia 9200就预装了Flash Player 5。
根据官方介绍,适用于 Symbian 的 Flash Lite 2.x 播放器与 Flash Lite 内容的早期版本 (1.0 和 1.1) 后向兼容。
二、Flash Lite播放器的安装与播放
Flash Lite播放器并不是所有的手机都是预安装的,为了更好的应用Flash Lite,我们就必须对那些没有预安装的手机装上Flash Lite播放器。值得注意的是Flash Lite2.1由于支持多个平台,所以下载时得看清楚是针对Symbian 还是其它平台的,由于每款手机的安装方式可能会导致的安装方式不一样,请大家自己看相关手机说明,我们这里主要以Nokia 6681为例。
首先我们先将下载好的Flash Lite2.1播放器的安装程序拷贝到手机存储卡中并运行,根据安装提示安装完毕后。我们将事先准备好的Flash Lite的动画拷贝到手机安装盘的other文件夹中。然后运行Flash Lite播放器,并在主界面中选择刚刚拷贝的Flash文件进行播放。由于Flash Lite2.1并不对flash进行文件关联,所以我们必须将Flash文件拷贝到other文件夹中,否则将无法播放。
相应下载地址:
软件名称 | Adobe FlashLite For S60 |
软件版本 | V2.1 |
软件大小 | 0.9 MB |
软件分类 | 手机软件(个人管理) |
软件语言 | 简体中文 |
应用平台 | 手机 S60 系统 |
软件作者 | adobe.com |
![]() |
软件名称 | Adobe FlashLite For Window mobile |
软件版本 | V2.1 |
软件大小 | 658 KB |
软件分类 | 手机软件(个人管理) |
软件语言 | 简体中文 |
应用平台 | 手机 Window mobile 系统 |
软件作者 | Microsoft.com |
![]() |
三、Flash Lite 1.1开发实例——会发音的手机拨号程序
1、程序介绍
会发音的手机拨号程序主要实现一个简单的拨打电话的Flash程序,每当按下某键时,该键就会发出相对应的读音,当然声音是必须事先做好导入到Flash中。整个程序主要通过按键事件完成。由于Flash Lite 1.x ActionScript是基于的 Flash 4 的ActionScript ,因此对于”.”语法并不支持,同样也不支持类,具体的ActionScript可以参考Flash 8的帮助文档。图一为整个应用程序的三个界面,在后面我们将会对每一个界面做详细的介绍。
![]() |
图一 会发音的手机拨号程序 |
2、操作步骤
1)打开Flash Professional 8,选择“文件>新建>模板>全球电话> Flash Lite 1-1-Symbian Series 60”新建文件,如图二。
![]() |
图二 Flash Pro 8 设计页面 |
2)选择“文档属性—设备设置”(如图三),并添加测试型号(Nokia 6681),并将此作为默认设备。
![]() |
图三 添加默认设备 Nokia 6681 |
备注:从模板创建后会自动建立两个图层,一为ActionScript层,放置一些帧动作,二为content层,当然我们并不一定需要按照它生成的图层去安排元件,你可以删掉图层根据自己的意愿重新新建图层。如果我们不想通过模板新建,而采取一般的方式新建,那么又是如何去做呢?其实我们只需要将普通文档的大小改成176*208(根据手机屏幕的分辨率来设置),其次修改发布设置,将版本调为Flash Lite 1.1,最后再按照步骤2调整一下测试设备即可。
现在我们看ActionScript层中第一帧模板给我们添加的一段代码“Fscommand2("FullScreen", true);”,熟悉Flash的朋友一看就能够明白,这是一个全屏指令,也就是让我们的程序运行时就处于全屏的状态。或许有朋友会问Fscommand2不是Fscommand吗,这里是不是搞错了?其实不然,Fscommand2同样是一个函数,是一个类似于Fscommand的函数,而且是只能在Flash Lite中使用的一个函数,虽然它与Fscommand相似,但是还是有许多不同点的。
Fscommand2与Fscommand的不同点?
a. fscommand2() 函数可以使用任意数量的参数。
b. Flash Lite 可以立即执行 fscommand2(),而 fscommand() 在被处理的帧结束时执行。
c. fscommand2() 函数可以返回一个用于报告成功、失败或命令结果的值。
如:status=fscommand2(“fullscreen”,true)
if(status != 0) {//如果status不为零则跳转到标签smllScrrnMode的帧
gotoAndPlay("smallScreenMode");
}
3)程序第一界面(启动画面)的创建
a. 首先我们创建一个背景层,导入背景图片, 并在背景层的第三帧按F5创建新帧。
b. 创建名为 “监测”的新图层,然后新建一个名为“btn_s”的影片剪辑,此影片剪辑主要用于按钮声音的播放,由于Flash Lite1.1不支持声音对象,因此我们不得不做声音影片剪辑方便调用。首先我们在“btn_s”的第一帧中输入帧动作“stop();”,然后插入新关键帧,并在此帧上添加事件声音。
d. 由于每帧都得调用到此影片剪辑,因此我们将btn_s添加到背景层中,并命名为“btn_s”
e. 新建一个名为“监测”的空按钮,将这个空按钮拖入到“监测”图层的第一帧中,并添加按钮动作:
on (keyPress "<Enter>") {
tellTarget("btn_s") //调用声音影片剪辑btn_s
{ gotoAndPlay(2);
}
gotoAndStop(2); //将主程序播放至第二帧
}
on (rollOver) { //取消焦点矩形
_focusrect = false;
}
备注:默认情况下,Flash Lite 会在具有焦点的按钮或输入文本字段周围绘制一个黄色的矩形。焦点矩形可以让用户知道屏幕上的哪个对象会在用户按下设备的选择键时进行响应。而如果我们需要取消焦点矩形,可以通过_focusrect=false进行取消。on(rollOver)事件是指当选择某个按钮时触发。
4) 程序第二界面(拨号界面)的创建
a. 在ActionScript图层的第一帧上输入“stop();”
b. 新建影片剪辑“n1”作为电话数字1,在第一帧添加帧动作“stop();”插入新的关键帧,并添加发音为“1”的声音事件,最后添加一个新的图层,添加静态文本,内容为数字“1”,按照同样的方法建立其它数字影片剪辑,并将这些影片剪辑拖放到content层中,按照图一的步局排列,并且分别命名为n1—n12;然后在content层第三帧按F5添加帧,将第二帧的内容与第三帧共享。
c. 按照图一,在content层添加一个动态文本框,变量名为tel_num
d.添加新图层“主按钮”,并在主按钮第二帧上插入关键帧,然后添加两个静态文本框,分别输入文字为“操作”与“退出”作为软键使用。最后在ActionScript图层第二帧上添加代码:
fscommand2("SetSoftKeys","操作","退出") //设置相关联的软键
stop();
f. 拖入btn按钮至监测层第二帧,并在按钮上添加如下动作:
on (keyPress "1") {
tellTarget ("n1") { //调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "1"; //字符串变量tel_num加”1”
}
on (keyPress "2") {
tellTarget ("n2") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "2"; //字符串变量tel_num加”2”
}
on (keyPress "3") {
tellTarget ("n3") { //调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "3"; //字符串变量tel_num加”3”
}
on (keyPress "4") {
tellTarget ("n4") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "4"; //字符串变量tel_num加”4”
}
on (keyPress "5") {
tellTarget ("n5") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "5"; //字符串变量tel_num加”5”
}
on (keyPress "6") {
tellTarget ("n6") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "6"; //字符串变量tel_num加”6”
}
on (keyPress "7") {
tellTarget ("n7") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "7"; //字符串变量tel_num加”7”
}
on (keyPress "8") {
tellTarget ("n8") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "8"; //字符串变量tel_num加”8”
}
on (keyPress "9") {
tellTarget ("n9") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "9"; //字符串变量tel_num加”9”
}
on (keyPress "*") {
tellTarget ("n10") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "*"; //字符串变量tel_num加”*”
}
on (keyPress "0") {
tellTarget ("n11") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "0"; //字符串变量tel_num加”0”
}
on (keyPress "#") {
tellTarget ("n12") {//调用声音影片剪辑
gotoAndPlay(2);
}
tel_num = tel_num add "#"; //字符串变量tel_num加”#”
}
on (rollOver) {
_focusrect = false; //取消焦点矩形
}
on (keyPress "<Left>")
{
tel_num=mbsubstring(tel_num, 0, mblength(tel_num)-1);
}
on (keyPress "<PageDown>") {
fscommand2("quit"); //按右软键退出
}
on (keyPress "<PageUp>") {
tellTarget("btn_s") //左软件调用声音影片剪辑并播放至第三帧
{
gotoAndPlay(2);
}
gotoAndStop(3);
}
备注:设备的软件键属于多功能键,它们始终使用设备的显示器来标识其用途。若要使用左软键和右软键,必须先调用 SetSoftKeys 命令。SetSoftKeys命令拥有两个参数,当然你在设置左右软键时可以使用静态文本,但同样也可以使用按钮或影片剪辑。但值得注意的当你重新设置了软键时,一定要设置退出的事件,否则你的Flash动画将无法退出,这时你就不得不很无奈的重新启动手机来关闭Flash动画。
5) 程序第三界面(操作界面)的创建(如图一③)
操作界面作为本程序的最后一个界面,也是最重要的一个界面,拨号、发短信都是在这个界面上进行操作的。
a. 我们根据界面创建三个按钮分别为拨号按钮、短信发送按钮、返回第二帧的按钮。
b. 新建一个名为“操作”的图层,在第三帧建立关键帧,并将前面新建的三个按钮拖入其中,然后分别为三个按钮添加如下动作:
拨号按钮:
on (press) {
getURL("tel:" add tel_num); //当拨号按钮被选中后,并且按下时启动电话
}
on (rollOver) { //按钮选中时调用声音影片剪辑
tellTarget("btn_s")
{
gotoAndPlay(2);
}
}
短信发送按钮:
on (press) {
getURL("sms:" add tel_num); //当拨号按钮被选中后,并且按下时启动短信
}
on (rollOver) { //按钮选中时调用声音影片剪辑
tellTarget("btn_s")
{
gotoAndPlay(2);
}
}
返回按钮:
on (press) {
gotoAndStop(2);
}
on (rollOver) {
tellTarget("btn_s")
{
gotoAndPlay(2);
}
}
c. 最后在ActionScript层第三帧添加动作stop();
到此,我们已经将整个Flash Lite 1.1程序开发完毕,最后将swf文件拷贝到手机存储卡中other文件中,然后使用我们装好的播放器运行一下自己的劳动成果吧,是不是很有成就感!
四、Flash Lite 2.1开发实例——会发音的手机拨号程序
1、开发包安装
Flash Professional 8默认的版本为Flash Lite 1.1,但如果我们需要在Flash Professional 8上面进行2.1的开发,我们就必须安装Flash Lite 2.1的安装包。
下载地址:点击下载 http://download.macromedia.com
下载安装后,我们再次打开Flash Professional 8,你会发现在帮助里面会出现关于Flash Lite 2.1的教程,而且在发布设置中会多出Flash Lite 2.0和Flash Lite 2.1。如图六:
![]() |
图六 Flash Lite 2.1 |
当我们选择Flash Lite 2.1版本的时候,测试设备也会出现相应的变化,不支持Flash Lite 2.1的手机将会变成灰色,通过这里大家也可以知道自己的手机是否支持Flash Lite 2.1。如图七:
![]() |
图七 检测是否支持自己的手机 |
2、操作步骤
相对于Flash Lite 1.1的开发,整个2.1的开发过程就显得流畅得多,整个过程中使用了很多的类与“.”语法,使整个流程更好清晰,易懂,而且Flash Lite 2.X 是基于Flash Player 7,并支持该版本的 Flash Player 中的大多数功能,包括 XML 处理和 ActionScript 2.0。因此大家在开发的过程中会觉得和平常Flash的开发没有太大的区别。
1) 新建文档与1.1的相似,然后我们更改发布设置,将版本更改为Flash Lite 2.1,并将ActionScript的版本改为ActionScript 2.0。
2) 添加背景层并导入背景图片,在背景层第三帧按F5添加帧
3) 添加图一①的静态文字,并在ActionScript第一帧插入如下代码:
fscommand2("FullScreen", true); //全屏设置
var tel_num=""; //设定电话号码变量
var myListener:Object = new Object(); //添加事件侦听器
myListener.onKeyDown = function()
{
if (Key.getCode() == Key.ENTER) { //如果按下确认键则跳转到第二帧
_root.gotoAndStop(2);
Key.removeListener(myListener); //删除事件侦听器}
}
Key.addListener(myListener);
stop();
4) 添加“号码”图层,然后在第二帧添加一个静态文本,内容为电话号码的数字,并且按照图一②排列。
![]() |
图一 排列样式 |
fscommand2("SetSoftKeys", "操作", "退出"); //全屏
var myListener:Object = new Object(); //添加事件侦听器
var mySound:Sound = new Sound(); //建立声音对象
mySound.onLoad = function(success) {
if (success == true) {
mySound.start(); //声音加载后播放
}
};
myListener.onKeyDown = function() {
switch (Key.getAscii()) { //根据相应的按键触发相应的事件
case 0 :
switch (Key.getCode()) {
case ExtendedKey.SOFT1 : //左软键
Key.removeListener(myListener); //跳转第三帧,并删除事件侦听器
mySound.loadSound("d.mp3");
gotoAndStop(3);
break;
case ExtendedKey.SOFT2 : //右软键
fscommand2("quit");
break;
case Key.LEFT :
mySound.loadSound("d.mp3");
tel_num = mbsubstring(tel_num, 0, mblength(tel_num)-1);
break;
}
break;
case 49 :
_root.n1.gotoAndPlay(2);
tel_num = tel_num add "1";
mySound.loadSound("1.mp3");
break;
case 50 :
_root.n2.gotoAndPlay(2);
tel_num = tel_num add "2";
mySound.loadSound("2.mp3");
break;
case 51 :
_root.n3.gotoAndPlay(2);
tel_num = tel_num add "3";
mySound.loadSound("3.mp3");
break;
case 52 :
_root.n4.gotoAndPlay(2);
tel_num = tel_num add "4";
mySound.loadSound("4.mp3");
break;
case 53 :
_root.n5.gotoAndPlay(2);
tel_num = tel_num add "5";
mySound.loadSound("5.mp3");
break;
case 54 :
_root.n6.gotoAndPlay(2);
tel_num = tel_num add "6";
mySound.loadSound("6.mp3");
break;
case 55 :
_root.n7.gotoAndPlay(2);
tel_num = tel_num add "7";
mySound.loadSound("7.mp3");
break;
case 56 :
_root.n8.gotoAndPlay(2);
tel_num = tel_num add "8";
mySound.loadSound("8.mp3");
break;
case 57 :
_root.n9.gotoAndPlay(2);
tel_num = tel_num add "9";
mySound.loadSound("9.mp3");
break;
case 42 :
_root.n10.gotoAndPlay(2);
tel_num = tel_num add "*";
mySound.loadSound("10.mp3");
break;
case 48 :
_root.n11.gotoAndPlay(2);
tel_num = tel_num add "0";
mySound.loadSound("0.mp3");
break;
case 35 :
_root.n12.gotoAndPlay(2);
tel_num = tel_num add "#";
mySound.loadSound("12.mp3");
break;
}
};
Key.addListener(myListener);
stop();
6) 如图一③分别建立三个影片剪辑“telphone”、“sendmsg”、“retun”,将这三个影片剪辑拖入到content图层的第三帧中,并在ActionScript第三帧中加入如下代码:
_root.call_tel.onPress = function() {
getURL("tel:" add tel_num); //拨打电话
};
_root.send_msg.onPress = function() {
getURL("sms:" add tel_num); //发送短信
};
_root.re.onPress = function() {
_root.gotoAndStop(2); //返回到第二帧
mySound=null;
};
_root.re.onRollOver = function() {
mySound.loadSound("d.mp3"); //当返回按钮获得焦点时调用声音文件
};
_root.send_msg.onRollOver = function() {
mySound.loadSound("d.mp3"); //当短信发送按钮获得焦点时调用声音文件
};
_root.call_tel.onRollOver = function() {
mySound.loadSound("d.mp3");//当拨打电话按钮获得焦点时调用声音文件
};
stop();
大家是不是觉得Flash Lite 2.1要比Flash Lite 1.1的开发简单,如果你这样想那你就错了,Flash Lite 2.1虽然看起来很流畅,但所要了解的东西却比1.1多得多,大家有兴趣可以自己翻阅Flash帮助文档。希望大家在阅读此文章时,可以将1.1与2.1对照起来阅读,这样有助于大家更快的去了解不同版本的Flash Lite的开发。
或许有的人会讲我只需要学会2.1就可以了,但我想大家应该知道,现在很多的手机并不支持2.1,为了更好的兼容,所以我觉得能尽量使用1.1的还是用1.1去开发,毕竟你的作品让更多的人认可才是最重要的。