Flash Builder在移动开发中的应用与思考
2014-07-24陈艳军温占考王巍
陈艳军++温占考++王巍
摘要:该文主要分析了当前移动开发中所遇到的问题,及解决这些问题的办法。重点阐述了Flash Builder在移动开发中的开发过程。以Android系统中地图应用为例,详细的说明了开发的方法,在开发中针对地图在手机横竖屏切换下所产生的问题,给出了较好的解决方法,对相关开发人员有较大的参考价值。
关键词:Flash Builder;移动开发;Android;横竖屏切换
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)15-3514-04
移动互联正如火如荼的高速发展,移动开发也成为目前最热门的技术之一。在2012及2013年全球智能手机操作系统中,市场份额的占有量见表1。
表1 全球智能移动手机操作系统市场份额占有率
从该表可以看出,智能手机操作系统占据主体地位的有Android和iOS,其市场份额达到了94.4%。其中Android系统的开发语言为Java,而iOS的开发语言为Objective-C,并且他们的开发模式也不尽相同。这种情况就给开发者提出了一个问题。如果开发的移动App要支持主流的智能手机,至少需要维护两个以上的团队。对于开发者来说,这显然是一个大问题。由于实力和效率等因素,很多开发者被迫只能选择支持其中一种操作系统。针对这种情况,目前有没有比较好的解决办法呢?
答案是肯定的,当前有两种比较适用的方法,一种是采用HTML5来开发移动应用。由于Android和iOS都支持HTML5,所以这是一个比较方便的做法,目前成熟的开发框架也比较多,像国外的PhoneGap和国内的AppCan都是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。其缺点是对HTML5、CSS的支持并没有一个统一的标准,存在兼容性等问题。
另一种解决办法是利用Adobe公司AIR架构来完成移动应用的跨平台开发。其开发工具是Flash Builder,它可以为Android平台构建移动Flex应用程序。也可以为Android和 iOS构建移动ActionScript应用程序。其优点是可以轻松地生成丰富的图表, 而且Flash毕竟有着卓越的图形表现力。缺点是智能手机操作系统需要Adobe AIR的运行库支持,运行效率较原生态的开发要低一些。
本文以Flash Builder 4.7为例,将介绍其在Android环境下的开发过程及实例应用。
1 Flash Builder手机项目
Flash Builder目前开发移动应用有两种模式,一种是Flex手机项目,该项目包含MXML类库,它能很方便的用于开发企业应用,提供了许多易用的数据绑定方式,页面布局相关的标准类等。另一种是ActionScript手机项目,是指纯ActionScript代码项目,不可以依赖图形编辑界面,目前大部分的移动应用都采用这种方式。这两种模式都能很方便的导入SWC及嵌入SWF资源,但Flex手机项目比ActionScript手机项目运行效率要低一些。
在Flash Builder平台下,新建Flex手机项目,如图1。
新建一个名为MapEg的项目,其新建项目的过程主要有项目位置、手机设置、服务器设置、构建路径四个步骤。其对框平台的支持主要体现在步骤2,手机设置上,如图2。
目前Flash Builder 4.7版本手机目标平台支持Apple iOS和Google Android。勾选开发者需要的目标平台即可。在创建完Flex手机项目后就可以在生成的框架下进一步完成移动App的开发。
2 Flash Builder开发手机地图实例
在上述创建的Flex手机项目中,以手机地图为例,来完成一个手机地图的应用开发。该文使用百度地图的Flash API,它是一套由ActionScript3.0语言编写的应用程序接口,能够在Flex/Flash和Mobile Flex/Flash项目中快速的构建地图应用。需要把百度开发的BMap.swc拷贝至项目libs文件夹中。
在自动生成的MXML文件中加入代码,代码如下:
<?xml version="1.0" encoding="utf-8"?>
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
show="init()"
title="手机地图">
<![CDATA[
import baidu.map.basetype.LngLat;
import baidu.map.basetype.Size;
import baidu.map.core.Map;
import baidu.map.layer.Layer;
import baidu.map.layer.RasterLayer;
private var map:Map;
protected function init():void
{
//创建map对象,并设置地图对象的大小
map = new Map(new Size(bdmap.width,bdmap.height));
//把地图对象加入舞台
bdmap.addChild(map);
//初始化Map的中心点和显示级别
map.centerAndZoom(new LngLat(116.403865, 39.915177), 16);
//添加地图的底图
var layer:Layer = new RasterLayer("BaiduMap", map);
map.addLayer(layer);
}
]] >
手机上运行的结果如图3。
图3 手机地图竖屏运行效果
3 手机地图横竖屏切换的问题
由于智能手机都支持横竖屏的切换,在上述开发的地图应用,切换成横屏幕的效果如图4。
发现地图显示不全,这是由于百度Flash API中Map类在实例化的时候,把地图的宽、高都固定好了,当手机横竖屏切换的时候,地图的宽、高不能适应变化。所以横屏的状态下,地图显示不全,直接影响了使用效果。
4 横竖屏切换问题的改进
为了能够比较好的解决这个问题,我们需要对程序进行优化。在View中添加事件resize="resizeHandler(event)",在
private function resizeHandler(event:ResizeEvent):void
{if(map != null)
{if(navigator.width > navigator.height)
{//横屏
map.width = Capabilities.screenResolutionY;
map.height = Capabilities.screenResolutionX;
}else{
//竖屏
map.width = Capabilities.screenResolutionX;
map.height = Capabilities.screenResolutionY;
}}}
这样修改后,在手机终端运行后得到的效果如图5。
5 总结
在移动开发中,由于涉及到多种操作系统,各种操作系统的开发技术均不同,开发者要维护各大移动系统的开发将花费大量的时间与资源。采用Flash Builder的AIR架构来开发移动应用将显得事倍功半。其可利用的资源也比较丰富,特别在图形动画方便的特效,开发起来非常的方便。该文以手机地图为例,较为详细的分析了开发中遇到横竖屏切换的问题,以及解决的办法,对相关开发人员有一定的启发意义。
参考文献:
[1] Android市场占有率上升而iOS小幅下降[EB/OL].http://mobile.163.com/14/0131/09/9JTJVSQ10011179O.html.
[2] 跨平台移动应用开发: AIR, PhoneGap, Titanium [EB/OL].http://blog.sina.com.cn/s/blog_4ba0876e01012tal.html.
[3] Adobe[EB/OL].http://www.adobe.com.
//初始化Map的中心点和显示级别
map.centerAndZoom(new LngLat(116.403865, 39.915177), 16);
//添加地图的底图
var layer:Layer = new RasterLayer("BaiduMap", map);
map.addLayer(layer);
}
]] >
手机上运行的结果如图3。
图3 手机地图竖屏运行效果
3 手机地图横竖屏切换的问题
由于智能手机都支持横竖屏的切换,在上述开发的地图应用,切换成横屏幕的效果如图4。
发现地图显示不全,这是由于百度Flash API中Map类在实例化的时候,把地图的宽、高都固定好了,当手机横竖屏切换的时候,地图的宽、高不能适应变化。所以横屏的状态下,地图显示不全,直接影响了使用效果。
4 横竖屏切换问题的改进
为了能够比较好的解决这个问题,我们需要对程序进行优化。在View中添加事件resize="resizeHandler(event)",在
private function resizeHandler(event:ResizeEvent):void
{if(map != null)
{if(navigator.width > navigator.height)
{//横屏
map.width = Capabilities.screenResolutionY;
map.height = Capabilities.screenResolutionX;
}else{
//竖屏
map.width = Capabilities.screenResolutionX;
map.height = Capabilities.screenResolutionY;
}}}
这样修改后,在手机终端运行后得到的效果如图5。
5 总结
在移动开发中,由于涉及到多种操作系统,各种操作系统的开发技术均不同,开发者要维护各大移动系统的开发将花费大量的时间与资源。采用Flash Builder的AIR架构来开发移动应用将显得事倍功半。其可利用的资源也比较丰富,特别在图形动画方便的特效,开发起来非常的方便。该文以手机地图为例,较为详细的分析了开发中遇到横竖屏切换的问题,以及解决的办法,对相关开发人员有一定的启发意义。
参考文献:
[1] Android市场占有率上升而iOS小幅下降[EB/OL].http://mobile.163.com/14/0131/09/9JTJVSQ10011179O.html.
[2] 跨平台移动应用开发: AIR, PhoneGap, Titanium [EB/OL].http://blog.sina.com.cn/s/blog_4ba0876e01012tal.html.
[3] Adobe[EB/OL].http://www.adobe.com.
//初始化Map的中心点和显示级别
map.centerAndZoom(new LngLat(116.403865, 39.915177), 16);
//添加地图的底图
var layer:Layer = new RasterLayer("BaiduMap", map);
map.addLayer(layer);
}
]] >
手机上运行的结果如图3。
图3 手机地图竖屏运行效果
3 手机地图横竖屏切换的问题
由于智能手机都支持横竖屏的切换,在上述开发的地图应用,切换成横屏幕的效果如图4。
发现地图显示不全,这是由于百度Flash API中Map类在实例化的时候,把地图的宽、高都固定好了,当手机横竖屏切换的时候,地图的宽、高不能适应变化。所以横屏的状态下,地图显示不全,直接影响了使用效果。
4 横竖屏切换问题的改进
为了能够比较好的解决这个问题,我们需要对程序进行优化。在View中添加事件resize="resizeHandler(event)",在
private function resizeHandler(event:ResizeEvent):void
{if(map != null)
{if(navigator.width > navigator.height)
{//横屏
map.width = Capabilities.screenResolutionY;
map.height = Capabilities.screenResolutionX;
}else{
//竖屏
map.width = Capabilities.screenResolutionX;
map.height = Capabilities.screenResolutionY;
}}}
这样修改后,在手机终端运行后得到的效果如图5。
5 总结
在移动开发中,由于涉及到多种操作系统,各种操作系统的开发技术均不同,开发者要维护各大移动系统的开发将花费大量的时间与资源。采用Flash Builder的AIR架构来开发移动应用将显得事倍功半。其可利用的资源也比较丰富,特别在图形动画方便的特效,开发起来非常的方便。该文以手机地图为例,较为详细的分析了开发中遇到横竖屏切换的问题,以及解决的办法,对相关开发人员有一定的启发意义。
参考文献:
[1] Android市场占有率上升而iOS小幅下降[EB/OL].http://mobile.163.com/14/0131/09/9JTJVSQ10011179O.html.
[2] 跨平台移动应用开发: AIR, PhoneGap, Titanium [EB/OL].http://blog.sina.com.cn/s/blog_4ba0876e01012tal.html.
[3] Adobe[EB/OL].http://www.adobe.com.