APP下载

Flash Builder在移动开发中的应用与思考

2014-07-24陈艳军温占考王巍

电脑知识与技术 2014年15期

陈艳军++温占考++王巍

摘要:该文主要分析了当前移动开发中所遇到的问题,及解决这些问题的办法。重点阐述了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.